Nana Akwasi Abayie Boateng

The Code below loads all the packages that would be required for this project.If a package is not available in the library,it will be downloaded and loaded.

#==================================================================
#  The follwing code :
# 1  Load all packages required for the analysis at the same time
# 2  Check if a required package is not already installed.
#3   If a required package is not already installed, the install thatt package
# 
#==================================================================
list=c("tidyverse","stringr","forcats","ggmap","rvest","tm","SnowballC","dplyr","calibrate","doParallel",
       "stringi","ggplot2","maps","httr","rsdmx","devtools","plyr","dplyr","ggplot2","caret","elasticnet",
       "magrittr","broom","glmnet","Hmisc",'knitr',"RSQLite","RANN","lubridate","ggvis","plotly","lars",
       "ggcorrplot","GGally","ROCR","lattice","car","corrgram","ggcorrplot","sqldf","parallel")
list_packages <- list
new.packages <- list_packages[!(list_packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
sapply(list, require, character.only = TRUE)
Loading required package: tidyverse
Loading tidyverse: ggplot2
Loading tidyverse: tibble
Loading tidyverse: tidyr
Loading tidyverse: readr
Loading tidyverse: purrr
Loading tidyverse: dplyr
package <U+393C><U+3E31>dplyr<U+393C><U+3E32> was built under R version 3.3.3Conflicts with tidy packages -------------------------------------------------------------------------------------------
filter(): dplyr, stats
lag():    dplyr, stats
Loading required package: stringr
Loading required package: forcats
Loading required package: ggmap
Google Maps API Terms of Service: http://developers.google.com/maps/terms.
Please cite ggmap if you use it: see citation('ggmap') for details.
Loading required package: rvest
Loading required package: xml2

Attaching package: <U+393C><U+3E31>rvest<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:readr<U+393C><U+3E32>:

    guess_encoding

Loading required package: tm
Loading required package: NLP

Attaching package: <U+393C><U+3E31>NLP<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:ggplot2<U+393C><U+3E32>:

    annotate

Loading required package: SnowballC
Loading required package: calibrate
Loading required package: MASS

Attaching package: <U+393C><U+3E31>MASS<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:dplyr<U+393C><U+3E32>:

    select

Loading required package: doParallel
package <U+393C><U+3E31>doParallel<U+393C><U+3E32> was built under R version 3.3.3Loading required package: foreach
foreach: simple, scalable parallel programming from Revolution Analytics
Use Revolution R for scalability, fault tolerance and more.
http://www.revolutionanalytics.com

Attaching package: <U+393C><U+3E31>foreach<U+393C><U+3E32>

The following objects are masked from <U+393C><U+3E31>package:purrr<U+393C><U+3E32>:

    accumulate, when

Loading required package: iterators
Loading required package: parallel
Loading required package: stringi
Loading required package: maps

Attaching package: <U+393C><U+3E31>maps<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:purrr<U+393C><U+3E32>:

    map

Loading required package: httr

Attaching package: <U+393C><U+3E31>httr<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:NLP<U+393C><U+3E32>:

    content

Loading required package: rsdmx
Loading required package: devtools
Loading required package: plyr
----------------------------------------------------------------------------------------------------------------------
You have loaded plyr after dplyr - this is likely to cause problems.
If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
library(plyr); library(dplyr)
----------------------------------------------------------------------------------------------------------------------

Attaching package: <U+393C><U+3E31>plyr<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:maps<U+393C><U+3E32>:

    ozone

The following objects are masked from <U+393C><U+3E31>package:dplyr<U+393C><U+3E32>:

    arrange, count, desc, failwith, id, mutate, rename, summarise, summarize

The following object is masked from <U+393C><U+3E31>package:purrr<U+393C><U+3E32>:

    compact

Loading required package: caret
Loading required package: lattice

Attaching package: <U+393C><U+3E31>caret<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:httr<U+393C><U+3E32>:

    progress

The following object is masked from <U+393C><U+3E31>package:purrr<U+393C><U+3E32>:

    lift

Loading required package: elasticnet
Loading required package: lars
Loaded lars 1.2

Loading required package: magrittr

Attaching package: <U+393C><U+3E31>magrittr<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:ggmap<U+393C><U+3E32>:

    inset

The following object is masked from <U+393C><U+3E31>package:purrr<U+393C><U+3E32>:

    set_names

The following object is masked from <U+393C><U+3E31>package:tidyr<U+393C><U+3E32>:

    extract

Loading required package: broom
Loading required package: glmnet
Loading required package: Matrix

Attaching package: <U+393C><U+3E31>Matrix<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:tidyr<U+393C><U+3E32>:

    expand

Loaded glmnet 2.0-5

Loading required package: Hmisc
Loading required package: survival

Attaching package: <U+393C><U+3E31>survival<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:caret<U+393C><U+3E32>:

    cluster

Loading required package: Formula

Attaching package: <U+393C><U+3E31>Hmisc<U+393C><U+3E32>

The following objects are masked from <U+393C><U+3E31>package:plyr<U+393C><U+3E32>:

    is.discrete, summarize

The following object is masked from <U+393C><U+3E31>package:rvest<U+393C><U+3E32>:

    html

The following objects are masked from <U+393C><U+3E31>package:dplyr<U+393C><U+3E32>:

    combine, src, summarize

The following objects are masked from <U+393C><U+3E31>package:base<U+393C><U+3E32>:

    format.pval, round.POSIXt, trunc.POSIXt, units

Loading required package: knitr
Loading required package: RSQLite
Loading required package: RANN
package <U+393C><U+3E31>RANN<U+393C><U+3E32> was built under R version 3.3.3Loading required package: lubridate

Attaching package: <U+393C><U+3E31>lubridate<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:plyr<U+393C><U+3E32>:

    here

The following object is masked from <U+393C><U+3E31>package:base<U+393C><U+3E32>:

    date

Loading required package: ggvis

Attaching package: <U+393C><U+3E31>ggvis<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:Matrix<U+393C><U+3E32>:

    band

The following object is masked from <U+393C><U+3E31>package:ggplot2<U+393C><U+3E32>:

    resolution

Loading required package: plotly

Attaching package: <U+393C><U+3E31>plotly<U+393C><U+3E32>

The following objects are masked from <U+393C><U+3E31>package:ggvis<U+393C><U+3E32>:

    add_data, hide_legend

The following object is masked from <U+393C><U+3E31>package:Hmisc<U+393C><U+3E32>:

    subplot

The following objects are masked from <U+393C><U+3E31>package:plyr<U+393C><U+3E32>:

    arrange, mutate, rename, summarise

The following object is masked from <U+393C><U+3E31>package:httr<U+393C><U+3E32>:

    config

The following object is masked from <U+393C><U+3E31>package:MASS<U+393C><U+3E32>:

    select

The following object is masked from <U+393C><U+3E31>package:ggmap<U+393C><U+3E32>:

    wind

The following object is masked from <U+393C><U+3E31>package:ggplot2<U+393C><U+3E32>:

    last_plot

The following object is masked from <U+393C><U+3E31>package:stats<U+393C><U+3E32>:

    filter

The following object is masked from <U+393C><U+3E31>package:graphics<U+393C><U+3E32>:

    layout

Loading required package: ggcorrplot
Loading required package: GGally

Attaching package: <U+393C><U+3E31>GGally<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:dplyr<U+393C><U+3E32>:

    nasa

Loading required package: ROCR
Loading required package: gplots

Attaching package: <U+393C><U+3E31>gplots<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:stats<U+393C><U+3E32>:

    lowess

Loading required package: car

Attaching package: <U+393C><U+3E31>car<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:dplyr<U+393C><U+3E32>:

    recode

The following object is masked from <U+393C><U+3E31>package:purrr<U+393C><U+3E32>:

    some

Loading required package: corrgram

Attaching package: <U+393C><U+3E31>corrgram<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:plyr<U+393C><U+3E32>:

    baseball

Loading required package: sqldf
Loading required package: gsubfn
Loading required package: proto
 tidyverse    stringr    forcats      ggmap      rvest         tm  SnowballC      dplyr  calibrate doParallel 
      TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE 
   stringi    ggplot2       maps       httr      rsdmx   devtools       plyr      dplyr    ggplot2      caret 
      TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE 
elasticnet   magrittr      broom     glmnet      Hmisc      knitr    RSQLite       RANN  lubridate      ggvis 
      TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE 
    plotly       lars ggcorrplot     GGally       ROCR    lattice        car   corrgram ggcorrplot      sqldf 
      TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE       TRUE 
  parallel 
      TRUE 
#==================================================================
#  Set up parallel processing
# leave two cores for operating system
#==================================================================
cluster <- makeCluster(detectCores() - 2) 
registerDoParallel(cluster)

The September 2015 data green taxi contains 1048575 rows and 21 columns.

#==================================================================
# load the downloaded data with the readr package
#  dim function produces the dimension of the data
# the  September 2015 data contains 1048575  rows  and      21 columns
#==================================================================
data=readr::read_csv("C:/Users/Gucci148/Documents/DataMiningscience/Capitalone/green_tripdata_2015-09.csv")
Parsed with column specification:
cols(
  .default = col_double(),
  VendorID = col_integer(),
  lpep_pickup_datetime = col_character(),
  Lpep_dropoff_datetime = col_character(),
  Store_and_fwd_flag = col_character(),
  RateCodeID = col_integer(),
  Passenger_count = col_integer(),
  Ehail_fee = col_character(),
  Payment_type = col_integer(),
  Trip_type = col_integer()
)
See spec(...) for full column specifications.

|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%           
|                                                                               |   0%    1 MB
|                                                                               |   0%    1 MB
|                                                                               |   0%    1 MB
|                                                                               |   0%    1 MB
|                                                                               |   1%    1 MB
|                                                                               |   1%    1 MB
|                                                                               |   1%    1 MB
|                                                                               |   1%    1 MB
|                                                                               |   1%    1 MB
|                                                                               |   1%    1 MB
|=                                                                              |   1%    1 MB
|=                                                                              |   1%    1 MB
|=                                                                              |   1%    1 MB
|=                                                                              |   1%    1 MB
|=                                                                              |   1%    1 MB
|=                                                                              |   1%    1 MB
|=                                                                              |   1%    1 MB
|=                                                                              |   1%    1 MB
|=                                                                              |   1%    2 MB
|=                                                                              |   1%    2 MB
|=                                                                              |   1%    2 MB
|=                                                                              |   1%    2 MB
|=                                                                              |   1%    2 MB
|=                                                                              |   1%    2 MB
|=                                                                              |   1%    2 MB
|=                                                                              |   1%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    2 MB
|=                                                                              |   2%    3 MB
|=                                                                              |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   2%    3 MB
|==                                                                             |   3%    3 MB
|==                                                                             |   3%    3 MB
|==                                                                             |   3%    3 MB
|==                                                                             |   3%    3 MB
|==                                                                             |   3%    3 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|==                                                                             |   3%    4 MB
|===                                                                            |   3%    4 MB
|===                                                                            |   3%    4 MB
|===                                                                            |   3%    4 MB
|===                                                                            |   3%    4 MB
|===                                                                            |   3%    4 MB
|===                                                                            |   3%    4 MB
|===                                                                            |   4%    4 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    5 MB
|===                                                                            |   4%    6 MB
|===                                                                            |   4%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    6 MB
|====                                                                           |   5%    7 MB
|====                                                                           |   5%    7 MB
|====                                                                           |   5%    7 MB
|====                                                                           |   5%    7 MB
|====                                                                           |   5%    7 MB
|====                                                                           |   5%    7 MB
|====                                                                           |   6%    7 MB
|====                                                                           |   6%    7 MB
|====                                                                           |   6%    7 MB
|====                                                                           |   6%    7 MB
|====                                                                           |   6%    7 MB
|====                                                                           |   6%    7 MB
|=====                                                                          |   6%    7 MB
|=====                                                                          |   6%    7 MB
|=====                                                                          |   6%    7 MB
|=====                                                                          |   6%    7 MB
|=====                                                                          |   6%    7 MB
|=====                                                                          |   6%    7 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   6%    8 MB
|=====                                                                          |   7%    8 MB
|=====                                                                          |   7%    8 MB
|=====                                                                          |   7%    8 MB
|=====                                                                          |   7%    8 MB
|=====                                                                          |   7%    8 MB
|=====                                                                          |   7%    8 MB
|=====                                                                          |   7%    8 MB
|=====                                                                          |   7%    9 MB
|=====                                                                          |   7%    9 MB
|=====                                                                          |   7%    9 MB
|=====                                                                          |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   7%    9 MB
|======                                                                         |   8%    9 MB
|======                                                                         |   8%    9 MB
|======                                                                         |   8%    9 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|======                                                                         |   8%   10 MB
|=======                                                                        |   8%   10 MB
|=======                                                                        |   8%   10 MB
|=======                                                                        |   8%   10 MB
|=======                                                                        |   8%   10 MB
|=======                                                                        |   8%   10 MB
|=======                                                                        |   8%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   11 MB
|=======                                                                        |   9%   12 MB
|=======                                                                        |   9%   12 MB
|=======                                                                        |   9%   12 MB
|=======                                                                        |   9%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   12 MB
|========                                                                       |  10%   13 MB
|========                                                                       |  10%   13 MB
|========                                                                       |  10%   13 MB
|========                                                                       |  10%   13 MB
|========                                                                       |  10%   13 MB
|========                                                                       |  10%   13 MB
|========                                                                       |  10%   13 MB
|========                                                                       |  10%   13 MB
|========                                                                       |  10%   13 MB
|========                                                                       |  11%   13 MB
|========                                                                       |  11%   13 MB
|========                                                                       |  11%   13 MB
|========                                                                       |  11%   13 MB
|========                                                                       |  11%   13 MB
|=========                                                                      |  11%   13 MB
|=========                                                                      |  11%   13 MB
|=========                                                                      |  11%   13 MB
|=========                                                                      |  11%   13 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  11%   14 MB
|=========                                                                      |  12%   14 MB
|=========                                                                      |  12%   14 MB
|=========                                                                      |  12%   14 MB
|=========                                                                      |  12%   14 MB
|=========                                                                      |  12%   14 MB
|=========                                                                      |  12%   15 MB
|=========                                                                      |  12%   15 MB
|=========                                                                      |  12%   15 MB
|=========                                                                      |  12%   15 MB
|=========                                                                      |  12%   15 MB
|=========                                                                      |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  12%   15 MB
|==========                                                                     |  13%   15 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|==========                                                                     |  13%   16 MB
|===========                                                                    |  13%   16 MB
|===========                                                                    |  13%   16 MB
|===========                                                                    |  13%   17 MB
|===========                                                                    |  13%   17 MB
|===========                                                                    |  13%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   17 MB
|===========                                                                    |  14%   18 MB
|===========                                                                    |  14%   18 MB
|===========                                                                    |  14%   18 MB
|===========                                                                    |  14%   18 MB
|===========                                                                    |  14%   18 MB
|===========                                                                    |  14%   18 MB
|===========                                                                    |  14%   18 MB
|===========                                                                    |  14%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   18 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  15%   19 MB
|============                                                                   |  16%   19 MB
|============                                                                   |  16%   19 MB
|============                                                                   |  16%   19 MB
|============                                                                   |  16%   19 MB
|============                                                                   |  16%   19 MB
|============                                                                   |  16%   19 MB
|=============                                                                  |  16%   19 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  16%   20 MB
|=============                                                                  |  17%   20 MB
|=============                                                                  |  17%   20 MB
|=============                                                                  |  17%   20 MB
|=============                                                                  |  17%   21 MB
|=============                                                                  |  17%   21 MB
|=============                                                                  |  17%   21 MB
|=============                                                                  |  17%   21 MB
|=============                                                                  |  17%   21 MB
|=============                                                                  |  17%   21 MB
|=============                                                                  |  17%   21 MB
|=============                                                                  |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   21 MB
|==============                                                                 |  17%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|==============                                                                 |  18%   22 MB
|===============                                                                |  18%   23 MB
|===============                                                                |  18%   23 MB
|===============                                                                |  18%   23 MB
|===============                                                                |  18%   23 MB
|===============                                                                |  18%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   23 MB
|===============                                                                |  19%   24 MB
|===============                                                                |  19%   24 MB
|===============                                                                |  19%   24 MB
|===============                                                                |  19%   24 MB
|===============                                                                |  19%   24 MB
|===============                                                                |  19%   24 MB
|===============                                                                |  19%   24 MB
|===============                                                                |  19%   24 MB
|===============                                                                |  19%   24 MB
|===============                                                                |  19%   24 MB
|================                                                               |  20%   24 MB
|================                                                               |  20%   24 MB
|================                                                               |  20%   24 MB
|================                                                               |  20%   24 MB
|================                                                               |  20%   24 MB
|================                                                               |  20%   24 MB
|================                                                               |  20%   24 MB
|================                                                               |  20%   24 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  20%   25 MB
|================                                                               |  21%   25 MB
|================                                                               |  21%   25 MB
|================                                                               |  21%   25 MB
|================                                                               |  21%   25 MB
|================                                                               |  21%   26 MB
|================                                                               |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  21%   26 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|=================                                                              |  22%   27 MB
|==================                                                             |  22%   27 MB
|==================                                                             |  22%   27 MB
|==================                                                             |  22%   27 MB
|==================                                                             |  22%   27 MB
|==================                                                             |  22%   27 MB
|==================                                                             |  22%   27 MB
|==================                                                             |  22%   27 MB
|==================                                                             |  22%   28 MB
|==================                                                             |  22%   28 MB
|==================                                                             |  22%   28 MB
|==================                                                             |  22%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   28 MB
|==================                                                             |  23%   29 MB
|==================                                                             |  23%   29 MB
|==================                                                             |  23%   29 MB
|===================                                                            |  23%   29 MB
|===================                                                            |  23%   29 MB
|===================                                                            |  23%   29 MB
|===================                                                            |  23%   29 MB
|===================                                                            |  23%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   29 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|===================                                                            |  24%   30 MB
|====================                                                           |  25%   30 MB
|====================                                                           |  25%   30 MB
|====================                                                           |  25%   30 MB
|====================                                                           |  25%   30 MB
|====================                                                           |  25%   30 MB
|====================                                                           |  25%   30 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  25%   31 MB
|====================                                                           |  26%   31 MB
|====================                                                           |  26%   31 MB
|====================                                                           |  26%   32 MB
|====================                                                           |  26%   32 MB
|====================                                                           |  26%   32 MB
|====================                                                           |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   32 MB
|=====================                                                          |  26%   33 MB
|=====================                                                          |  26%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|=====================                                                          |  27%   33 MB
|======================                                                         |  27%   33 MB
|======================                                                         |  27%   33 MB
|======================                                                         |  27%   33 MB
|======================                                                         |  27%   33 MB
|======================                                                         |  27%   33 MB
|======================                                                         |  27%   34 MB
|======================                                                         |  27%   34 MB
|======================                                                         |  27%   34 MB
|======================                                                         |  27%   34 MB
|======================                                                         |  27%   34 MB
|======================                                                         |  27%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   34 MB
|======================                                                         |  28%   35 MB
|======================                                                         |  28%   35 MB
|======================                                                         |  28%   35 MB
|======================                                                         |  28%   35 MB
|======================                                                         |  28%   35 MB
|=======================                                                        |  28%   35 MB
|=======================                                                        |  28%   35 MB
|=======================                                                        |  28%   35 MB
|=======================                                                        |  28%   35 MB
|=======================                                                        |  28%   35 MB
|=======================                                                        |  29%   35 MB
|=======================                                                        |  29%   35 MB
|=======================                                                        |  29%   35 MB
|=======================                                                        |  29%   35 MB
|=======================                                                        |  29%   35 MB
|=======================                                                        |  29%   35 MB
|=======================                                                        |  29%   35 MB
|=======================                                                        |  29%   35 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|=======================                                                        |  29%   36 MB
|========================                                                       |  30%   36 MB
|========================                                                       |  30%   36 MB
|========================                                                       |  30%   36 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  30%   37 MB
|========================                                                       |  31%   38 MB
|========================                                                       |  31%   38 MB
|========================                                                       |  31%   38 MB
|========================                                                       |  31%   38 MB
|========================                                                       |  31%   38 MB
|========================                                                       |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   38 MB
|=========================                                                      |  31%   39 MB
|=========================                                                      |  31%   39 MB
|=========================                                                      |  31%   39 MB
|=========================                                                      |  31%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|=========================                                                      |  32%   39 MB
|==========================                                                     |  32%   39 MB
|==========================                                                     |  32%   39 MB
|==========================                                                     |  32%   39 MB
|==========================                                                     |  32%   40 MB
|==========================                                                     |  32%   40 MB
|==========================                                                     |  32%   40 MB
|==========================                                                     |  32%   40 MB
|==========================                                                     |  32%   40 MB
|==========================                                                     |  32%   40 MB
|==========================                                                     |  32%   40 MB
|==========================                                                     |  32%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   40 MB
|==========================                                                     |  33%   41 MB
|==========================                                                     |  33%   41 MB
|==========================                                                     |  33%   41 MB
|==========================                                                     |  33%   41 MB
|==========================                                                     |  33%   41 MB
|==========================                                                     |  33%   41 MB
|==========================                                                     |  33%   41 MB
|===========================                                                    |  33%   41 MB
|===========================                                                    |  33%   41 MB
|===========================                                                    |  33%   41 MB
|===========================                                                    |  33%   41 MB
|===========================                                                    |  33%   41 MB
|===========================                                                    |  33%   41 MB
|===========================                                                    |  34%   41 MB
|===========================                                                    |  34%   41 MB
|===========================                                                    |  34%   41 MB
|===========================                                                    |  34%   41 MB
|===========================                                                    |  34%   41 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|===========================                                                    |  34%   42 MB
|============================                                                   |  35%   42 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   43 MB
|============================                                                   |  35%   44 MB
|============================                                                   |  35%   44 MB
|============================                                                   |  35%   44 MB
|============================                                                   |  36%   44 MB
|============================                                                   |  36%   44 MB
|============================                                                   |  36%   44 MB
|============================                                                   |  36%   44 MB
|============================                                                   |  36%   44 MB
|============================                                                   |  36%   44 MB
|=============================                                                  |  36%   44 MB
|=============================                                                  |  36%   44 MB
|=============================                                                  |  36%   44 MB
|=============================                                                  |  36%   44 MB
|=============================                                                  |  36%   44 MB
|=============================                                                  |  36%   44 MB
|=============================                                                  |  36%   44 MB
|=============================                                                  |  36%   44 MB
|=============================                                                  |  36%   44 MB
|=============================                                                  |  36%   45 MB
|=============================                                                  |  36%   45 MB
|=============================                                                  |  36%   45 MB
|=============================                                                  |  36%   45 MB
|=============================                                                  |  36%   45 MB
|=============================                                                  |  36%   45 MB
|=============================                                                  |  36%   45 MB
|=============================                                                  |  36%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|=============================                                                  |  37%   45 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  37%   46 MB
|==============================                                                 |  38%   46 MB
|==============================                                                 |  38%   46 MB
|==============================                                                 |  38%   46 MB
|==============================                                                 |  38%   46 MB
|==============================                                                 |  38%   46 MB
|==============================                                                 |  38%   46 MB
|==============================                                                 |  38%   46 MB
|==============================                                                 |  38%   47 MB
|==============================                                                 |  38%   47 MB
|==============================                                                 |  38%   47 MB
|==============================                                                 |  38%   47 MB
|==============================                                                 |  38%   47 MB
|==============================                                                 |  38%   47 MB
|==============================                                                 |  38%   47 MB
|==============================                                                 |  38%   47 MB
|==============================                                                 |  38%   47 MB
|==============================                                                 |  38%   47 MB
|===============================                                                |  38%   47 MB
|===============================                                                |  38%   47 MB
|===============================                                                |  38%   47 MB
|===============================                                                |  38%   47 MB
|===============================                                                |  38%   47 MB
|===============================                                                |  39%   47 MB
|===============================                                                |  39%   47 MB
|===============================                                                |  39%   47 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   48 MB
|===============================                                                |  39%   49 MB
|===============================                                                |  39%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   49 MB
|================================                                               |  40%   50 MB
|================================                                               |  40%   50 MB
|================================                                               |  40%   50 MB
|================================                                               |  40%   50 MB
|================================                                               |  40%   50 MB
|================================                                               |  41%   50 MB
|================================                                               |  41%   50 MB
|================================                                               |  41%   50 MB
|================================                                               |  41%   50 MB
|================================                                               |  41%   50 MB
|================================                                               |  41%   50 MB
|=================================                                              |  41%   50 MB
|=================================                                              |  41%   50 MB
|=================================                                              |  41%   50 MB
|=================================                                              |  41%   50 MB
|=================================                                              |  41%   50 MB
|=================================                                              |  41%   50 MB
|=================================                                              |  41%   50 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  41%   51 MB
|=================================                                              |  42%   51 MB
|=================================                                              |  42%   51 MB
|=================================                                              |  42%   51 MB
|=================================                                              |  42%   51 MB
|=================================                                              |  42%   51 MB
|=================================                                              |  42%   51 MB
|=================================                                              |  42%   51 MB
|=================================                                              |  42%   51 MB
|=================================                                              |  42%   52 MB
|=================================                                              |  42%   52 MB
|=================================                                              |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  42%   52 MB
|==================================                                             |  43%   52 MB
|==================================                                             |  43%   52 MB
|==================================                                             |  43%   52 MB
|==================================                                             |  43%   52 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|==================================                                             |  43%   53 MB
|===================================                                            |  43%   53 MB
|===================================                                            |  43%   53 MB
|===================================                                            |  43%   53 MB
|===================================                                            |  43%   53 MB
|===================================                                            |  43%   53 MB
|===================================                                            |  44%   53 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   54 MB
|===================================                                            |  44%   55 MB
|===================================                                            |  44%   55 MB
|===================================                                            |  44%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   55 MB
|====================================                                           |  45%   56 MB
|====================================                                           |  45%   56 MB
|====================================                                           |  45%   56 MB
|====================================                                           |  45%   56 MB
|====================================                                           |  45%   56 MB
|====================================                                           |  45%   56 MB
|====================================                                           |  45%   56 MB
|====================================                                           |  45%   56 MB
|====================================                                           |  46%   56 MB
|====================================                                           |  46%   56 MB
|====================================                                           |  46%   56 MB
|====================================                                           |  46%   56 MB
|====================================                                           |  46%   56 MB
|=====================================                                          |  46%   56 MB
|=====================================                                          |  46%   56 MB
|=====================================                                          |  46%   56 MB
|=====================================                                          |  46%   56 MB
|=====================================                                          |  46%   56 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  46%   57 MB
|=====================================                                          |  47%   57 MB
|=====================================                                          |  47%   57 MB
|=====================================                                          |  47%   57 MB
|=====================================                                          |  47%   57 MB
|=====================================                                          |  47%   57 MB
|=====================================                                          |  47%   57 MB
|=====================================                                          |  47%   58 MB
|=====================================                                          |  47%   58 MB
|=====================================                                          |  47%   58 MB
|=====================================                                          |  47%   58 MB
|=====================================                                          |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  47%   58 MB
|======================================                                         |  48%   58 MB
|======================================                                         |  48%   58 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|======================================                                         |  48%   59 MB
|=======================================                                        |  48%   59 MB
|=======================================                                        |  48%   59 MB
|=======================================                                        |  48%   59 MB
|=======================================                                        |  48%   59 MB
|=======================================                                        |  48%   60 MB
|=======================================                                        |  48%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   60 MB
|=======================================                                        |  49%   61 MB
|=======================================                                        |  49%   61 MB
|=======================================                                        |  49%   61 MB
|=======================================                                        |  49%   61 MB
|=======================================                                        |  49%   61 MB
|=======================================                                        |  49%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   61 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  50%   62 MB
|========================================                                       |  51%   62 MB
|========================================                                       |  51%   62 MB
|========================================                                       |  51%   62 MB
|========================================                                       |  51%   62 MB
|========================================                                       |  51%   62 MB
|========================================                                       |  51%   62 MB
|=========================================                                      |  51%   62 MB
|=========================================                                      |  51%   62 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  51%   63 MB
|=========================================                                      |  52%   63 MB
|=========================================                                      |  52%   63 MB
|=========================================                                      |  52%   63 MB
|=========================================                                      |  52%   63 MB
|=========================================                                      |  52%   64 MB
|=========================================                                      |  52%   64 MB
|=========================================                                      |  52%   64 MB
|=========================================                                      |  52%   64 MB
|=========================================                                      |  52%   64 MB
|=========================================                                      |  52%   64 MB
|=========================================                                      |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  52%   64 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|==========================================                                     |  53%   65 MB
|===========================================                                    |  53%   65 MB
|===========================================                                    |  53%   65 MB
|===========================================                                    |  53%   66 MB
|===========================================                                    |  53%   66 MB
|===========================================                                    |  53%   66 MB
|===========================================                                    |  53%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   66 MB
|===========================================                                    |  54%   67 MB
|===========================================                                    |  54%   67 MB
|===========================================                                    |  54%   67 MB
|===========================================                                    |  54%   67 MB
|===========================================                                    |  54%   67 MB
|===========================================                                    |  54%   67 MB
|===========================================                                    |  54%   67 MB
|===========================================                                    |  54%   67 MB
|============================================                                   |  55%   67 MB
|============================================                                   |  55%   67 MB
|============================================                                   |  55%   67 MB
|============================================                                   |  55%   67 MB
|============================================                                   |  55%   67 MB
|============================================                                   |  55%   67 MB
|============================================                                   |  55%   67 MB
|============================================                                   |  55%   67 MB
|============================================                                   |  55%   67 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  55%   68 MB
|============================================                                   |  56%   68 MB
|============================================                                   |  56%   68 MB
|============================================                                   |  56%   68 MB
|============================================                                   |  56%   68 MB
|============================================                                   |  56%   68 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  56%   69 MB
|=============================================                                  |  57%   69 MB
|=============================================                                  |  57%   69 MB
|=============================================                                  |  57%   70 MB
|=============================================                                  |  57%   70 MB
|=============================================                                  |  57%   70 MB
|=============================================                                  |  57%   70 MB
|=============================================                                  |  57%   70 MB
|=============================================                                  |  57%   70 MB
|=============================================                                  |  57%   70 MB
|=============================================                                  |  57%   70 MB
|=============================================                                  |  57%   70 MB
|==============================================                                 |  57%   70 MB
|==============================================                                 |  57%   70 MB
|==============================================                                 |  57%   70 MB
|==============================================                                 |  57%   70 MB
|==============================================                                 |  57%   70 MB
|==============================================                                 |  57%   70 MB
|==============================================                                 |  57%   70 MB
|==============================================                                 |  57%   70 MB
|==============================================                                 |  57%   71 MB
|==============================================                                 |  57%   71 MB
|==============================================                                 |  57%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   71 MB
|==============================================                                 |  58%   72 MB
|===============================================                                |  58%   72 MB
|===============================================                                |  58%   72 MB
|===============================================                                |  58%   72 MB
|===============================================                                |  58%   72 MB
|===============================================                                |  58%   72 MB
|===============================================                                |  58%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   72 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|===============================================                                |  59%   73 MB
|================================================                               |  60%   73 MB
|================================================                               |  60%   73 MB
|================================================                               |  60%   73 MB
|================================================                               |  60%   73 MB
|================================================                               |  60%   73 MB
|================================================                               |  60%   73 MB
|================================================                               |  60%   73 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  60%   74 MB
|================================================                               |  61%   74 MB
|================================================                               |  61%   74 MB
|================================================                               |  61%   74 MB
|================================================                               |  61%   75 MB
|================================================                               |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   75 MB
|=================================================                              |  61%   76 MB
|=================================================                              |  62%   76 MB
|=================================================                              |  62%   76 MB
|=================================================                              |  62%   76 MB
|=================================================                              |  62%   76 MB
|=================================================                              |  62%   76 MB
|=================================================                              |  62%   76 MB
|=================================================                              |  62%   76 MB
|=================================================                              |  62%   76 MB
|=================================================                              |  62%   76 MB
|=================================================                              |  62%   76 MB
|==================================================                             |  62%   76 MB
|==================================================                             |  62%   76 MB
|==================================================                             |  62%   76 MB
|==================================================                             |  62%   76 MB
|==================================================                             |  62%   76 MB
|==================================================                             |  62%   76 MB
|==================================================                             |  62%   77 MB
|==================================================                             |  62%   77 MB
|==================================================                             |  62%   77 MB
|==================================================                             |  62%   77 MB
|==================================================                             |  62%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   77 MB
|==================================================                             |  63%   78 MB
|==================================================                             |  63%   78 MB
|==================================================                             |  63%   78 MB
|==================================================                             |  63%   78 MB
|===================================================                            |  63%   78 MB
|===================================================                            |  63%   78 MB
|===================================================                            |  63%   78 MB
|===================================================                            |  63%   78 MB
|===================================================                            |  63%   78 MB
|===================================================                            |  64%   78 MB
|===================================================                            |  64%   78 MB
|===================================================                            |  64%   78 MB
|===================================================                            |  64%   78 MB
|===================================================                            |  64%   78 MB
|===================================================                            |  64%   78 MB
|===================================================                            |  64%   78 MB
|===================================================                            |  64%   78 MB
|===================================================                            |  64%   78 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|===================================================                            |  64%   79 MB
|====================================================                           |  65%   79 MB
|====================================================                           |  65%   79 MB
|====================================================                           |  65%   79 MB
|====================================================                           |  65%   79 MB
|====================================================                           |  65%   79 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  65%   80 MB
|====================================================                           |  66%   80 MB
|====================================================                           |  66%   81 MB
|====================================================                           |  66%   81 MB
|====================================================                           |  66%   81 MB
|====================================================                           |  66%   81 MB
|====================================================                           |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   81 MB
|=====================================================                          |  66%   82 MB
|=====================================================                          |  66%   82 MB
|=====================================================                          |  66%   82 MB
|=====================================================                          |  66%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|=====================================================                          |  67%   82 MB
|======================================================                         |  67%   82 MB
|======================================================                         |  67%   82 MB
|======================================================                         |  67%   82 MB
|======================================================                         |  67%   82 MB
|======================================================                         |  67%   83 MB
|======================================================                         |  67%   83 MB
|======================================================                         |  67%   83 MB
|======================================================                         |  67%   83 MB
|======================================================                         |  67%   83 MB
|======================================================                         |  67%   83 MB
|======================================================                         |  67%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   83 MB
|======================================================                         |  68%   84 MB
|======================================================                         |  68%   84 MB
|======================================================                         |  68%   84 MB
|======================================================                         |  68%   84 MB
|======================================================                         |  68%   84 MB
|======================================================                         |  68%   84 MB
|=======================================================                        |  68%   84 MB
|=======================================================                        |  68%   84 MB
|=======================================================                        |  68%   84 MB
|=======================================================                        |  68%   84 MB
|=======================================================                        |  68%   84 MB
|=======================================================                        |  68%   84 MB
|=======================================================                        |  69%   84 MB
|=======================================================                        |  69%   84 MB
|=======================================================                        |  69%   84 MB
|=======================================================                        |  69%   84 MB
|=======================================================                        |  69%   84 MB
|=======================================================                        |  69%   84 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|=======================================================                        |  69%   85 MB
|========================================================                       |  70%   85 MB
|========================================================                       |  70%   85 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   86 MB
|========================================================                       |  70%   87 MB
|========================================================                       |  71%   87 MB
|========================================================                       |  71%   87 MB
|========================================================                       |  71%   87 MB
|========================================================                       |  71%   87 MB
|========================================================                       |  71%   87 MB
|========================================================                       |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   87 MB
|=========================================================                      |  71%   88 MB
|=========================================================                      |  71%   88 MB
|=========================================================                      |  71%   88 MB
|=========================================================                      |  71%   88 MB
|=========================================================                      |  71%   88 MB
|=========================================================                      |  71%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|=========================================================                      |  72%   88 MB
|==========================================================                     |  72%   88 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  72%   89 MB
|==========================================================                     |  73%   89 MB
|==========================================================                     |  73%   89 MB
|==========================================================                     |  73%   89 MB
|==========================================================                     |  73%   89 MB
|==========================================================                     |  73%   89 MB
|==========================================================                     |  73%   89 MB
|==========================================================                     |  73%   89 MB
|==========================================================                     |  73%   89 MB
|==========================================================                     |  73%   90 MB
|==========================================================                     |  73%   90 MB
|==========================================================                     |  73%   90 MB
|==========================================================                     |  73%   90 MB
|==========================================================                     |  73%   90 MB
|==========================================================                     |  73%   90 MB
|==========================================================                     |  73%   90 MB
|==========================================================                     |  73%   90 MB
|===========================================================                    |  73%   90 MB
|===========================================================                    |  73%   90 MB
|===========================================================                    |  73%   90 MB
|===========================================================                    |  73%   90 MB
|===========================================================                    |  73%   90 MB
|===========================================================                    |  74%   90 MB
|===========================================================                    |  74%   90 MB
|===========================================================                    |  74%   90 MB
|===========================================================                    |  74%   90 MB
|===========================================================                    |  74%   90 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|===========================================================                    |  74%   91 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   92 MB
|============================================================                   |  75%   93 MB
|============================================================                   |  75%   93 MB
|============================================================                   |  75%   93 MB
|============================================================                   |  75%   93 MB
|============================================================                   |  76%   93 MB
|============================================================                   |  76%   93 MB
|============================================================                   |  76%   93 MB
|============================================================                   |  76%   93 MB
|============================================================                   |  76%   93 MB
|============================================================                   |  76%   93 MB
|=============================================================                  |  76%   93 MB
|=============================================================                  |  76%   93 MB
|=============================================================                  |  76%   93 MB
|=============================================================                  |  76%   93 MB
|=============================================================                  |  76%   93 MB
|=============================================================                  |  76%   93 MB
|=============================================================                  |  76%   93 MB
|=============================================================                  |  76%   93 MB
|=============================================================                  |  76%   94 MB
|=============================================================                  |  76%   94 MB
|=============================================================                  |  76%   94 MB
|=============================================================                  |  76%   94 MB
|=============================================================                  |  76%   94 MB
|=============================================================                  |  76%   94 MB
|=============================================================                  |  76%   94 MB
|=============================================================                  |  76%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   94 MB
|=============================================================                  |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  77%   95 MB
|==============================================================                 |  78%   95 MB
|==============================================================                 |  78%   95 MB
|==============================================================                 |  78%   95 MB
|==============================================================                 |  78%   95 MB
|==============================================================                 |  78%   95 MB
|==============================================================                 |  78%   95 MB
|==============================================================                 |  78%   96 MB
|==============================================================                 |  78%   96 MB
|==============================================================                 |  78%   96 MB
|==============================================================                 |  78%   96 MB
|==============================================================                 |  78%   96 MB
|==============================================================                 |  78%   96 MB
|==============================================================                 |  78%   96 MB
|==============================================================                 |  78%   96 MB
|==============================================================                 |  78%   96 MB
|==============================================================                 |  78%   96 MB
|===============================================================                |  78%   96 MB
|===============================================================                |  78%   96 MB
|===============================================================                |  78%   96 MB
|===============================================================                |  78%   96 MB
|===============================================================                |  78%   96 MB
|===============================================================                |  78%   96 MB
|===============================================================                |  79%   96 MB
|===============================================================                |  79%   96 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   97 MB
|===============================================================                |  79%   98 MB
|===============================================================                |  79%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   98 MB
|================================================================               |  80%   99 MB
|================================================================               |  80%   99 MB
|================================================================               |  80%   99 MB
|================================================================               |  80%   99 MB
|================================================================               |  80%   99 MB
|================================================================               |  80%   99 MB
|================================================================               |  81%   99 MB
|================================================================               |  81%   99 MB
|================================================================               |  81%   99 MB
|================================================================               |  81%   99 MB
|================================================================               |  81%   99 MB
|================================================================               |  81%   99 MB
|=================================================================              |  81%   99 MB
|=================================================================              |  81%   99 MB
|=================================================================              |  81%   99 MB
|=================================================================              |  81%   99 MB
|=================================================================              |  81%   99 MB
|=================================================================              |  81%   99 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  81%  100 MB
|=================================================================              |  82%  100 MB
|=================================================================              |  82%  100 MB
|=================================================================              |  82%  100 MB
|=================================================================              |  82%  100 MB
|=================================================================              |  82%  100 MB
|=================================================================              |  82%  100 MB
|=================================================================              |  82%  100 MB
|=================================================================              |  82%  100 MB
|=================================================================              |  82%  101 MB
|=================================================================              |  82%  101 MB
|=================================================================              |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  82%  101 MB
|==================================================================             |  83%  101 MB
|==================================================================             |  83%  101 MB
|==================================================================             |  83%  101 MB
|==================================================================             |  83%  101 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|==================================================================             |  83%  102 MB
|===================================================================            |  83%  102 MB
|===================================================================            |  83%  102 MB
|===================================================================            |  83%  102 MB
|===================================================================            |  83%  102 MB
|===================================================================            |  83%  102 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  103 MB
|===================================================================            |  84%  104 MB
|===================================================================            |  84%  104 MB
|===================================================================            |  84%  104 MB
|===================================================================            |  84%  104 MB
|===================================================================            |  84%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  104 MB
|====================================================================           |  85%  105 MB
|====================================================================           |  85%  105 MB
|====================================================================           |  85%  105 MB
|====================================================================           |  85%  105 MB
|====================================================================           |  85%  105 MB
|====================================================================           |  85%  105 MB
|====================================================================           |  85%  105 MB
|====================================================================           |  85%  105 MB
|====================================================================           |  86%  105 MB
|====================================================================           |  86%  105 MB
|====================================================================           |  86%  105 MB
|====================================================================           |  86%  105 MB
|====================================================================           |  86%  105 MB
|====================================================================           |  86%  105 MB
|=====================================================================          |  86%  105 MB
|=====================================================================          |  86%  105 MB
|=====================================================================          |  86%  105 MB
|=====================================================================          |  86%  105 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  86%  106 MB
|=====================================================================          |  87%  106 MB
|=====================================================================          |  87%  106 MB
|=====================================================================          |  87%  106 MB
|=====================================================================          |  87%  106 MB
|=====================================================================          |  87%  106 MB
|=====================================================================          |  87%  107 MB
|=====================================================================          |  87%  107 MB
|=====================================================================          |  87%  107 MB
|=====================================================================          |  87%  107 MB
|=====================================================================          |  87%  107 MB
|=====================================================================          |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  87%  107 MB
|======================================================================         |  88%  107 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|======================================================================         |  88%  108 MB
|=======================================================================        |  88%  108 MB
|=======================================================================        |  88%  108 MB
|=======================================================================        |  88%  109 MB
|=======================================================================        |  88%  109 MB
|=======================================================================        |  88%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  109 MB
|=======================================================================        |  89%  110 MB
|=======================================================================        |  89%  110 MB
|=======================================================================        |  89%  110 MB
|=======================================================================        |  89%  110 MB
|=======================================================================        |  89%  110 MB
|=======================================================================        |  89%  110 MB
|=======================================================================        |  89%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  110 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  90%  111 MB
|========================================================================       |  91%  111 MB
|========================================================================       |  91%  111 MB
|========================================================================       |  91%  111 MB
|========================================================================       |  91%  111 MB
|========================================================================       |  91%  111 MB
|=========================================================================      |  91%  111 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  91%  112 MB
|=========================================================================      |  92%  112 MB
|=========================================================================      |  92%  112 MB
|=========================================================================      |  92%  112 MB
|=========================================================================      |  92%  113 MB
|=========================================================================      |  92%  113 MB
|=========================================================================      |  92%  113 MB
|=========================================================================      |  92%  113 MB
|=========================================================================      |  92%  113 MB
|=========================================================================      |  92%  113 MB
|=========================================================================      |  92%  113 MB
|=========================================================================      |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  113 MB
|==========================================================================     |  92%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|==========================================================================     |  93%  114 MB
|===========================================================================    |  93%  115 MB
|===========================================================================    |  93%  115 MB
|===========================================================================    |  93%  115 MB
|===========================================================================    |  93%  115 MB
|===========================================================================    |  93%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  115 MB
|===========================================================================    |  94%  116 MB
|===========================================================================    |  94%  116 MB
|===========================================================================    |  94%  116 MB
|===========================================================================    |  94%  116 MB
|===========================================================================    |  94%  116 MB
|===========================================================================    |  94%  116 MB
|===========================================================================    |  94%  116 MB
|===========================================================================    |  94%  116 MB
|===========================================================================    |  94%  116 MB
|============================================================================   |  95%  116 MB
|============================================================================   |  95%  116 MB
|============================================================================   |  95%  116 MB
|============================================================================   |  95%  116 MB
|============================================================================   |  95%  116 MB
|============================================================================   |  95%  116 MB
|============================================================================   |  95%  116 MB
|============================================================================   |  95%  116 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  95%  117 MB
|============================================================================   |  96%  117 MB
|============================================================================   |  96%  117 MB
|============================================================================   |  96%  117 MB
|============================================================================   |  96%  117 MB
|============================================================================   |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  96%  118 MB
|=============================================================================  |  97%  119 MB
|=============================================================================  |  97%  119 MB
|=============================================================================  |  97%  119 MB
|=============================================================================  |  97%  119 MB
|=============================================================================  |  97%  119 MB
|=============================================================================  |  97%  119 MB
|=============================================================================  |  97%  119 MB
|=============================================================================  |  97%  119 MB
|=============================================================================  |  97%  119 MB
|=============================================================================  |  97%  119 MB
|============================================================================== |  97%  119 MB
|============================================================================== |  97%  119 MB
|============================================================================== |  97%  119 MB
|============================================================================== |  97%  119 MB
|============================================================================== |  97%  119 MB
|============================================================================== |  97%  119 MB
|============================================================================== |  97%  119 MB
|============================================================================== |  97%  119 MB
|============================================================================== |  97%  120 MB
|============================================================================== |  97%  120 MB
|============================================================================== |  97%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  120 MB
|============================================================================== |  98%  121 MB
|============================================================================== |  98%  121 MB
|===============================================================================|  98%  121 MB
|===============================================================================|  98%  121 MB
|===============================================================================|  98%  121 MB
|===============================================================================|  98%  121 MB
|===============================================================================|  98%  121 MB
|===============================================================================|  98%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  121 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|===============================================================================|  99%  122 MB
|================================================================================| 100%  122 MB
names(data)
 [1] "VendorID"              "lpep_pickup_datetime"  "Lpep_dropoff_datetime" "Store_and_fwd_flag"   
 [5] "RateCodeID"            "Pickup_longitude"      "Pickup_latitude"       "Dropoff_longitude"    
 [9] "Dropoff_latitude"      "Passenger_count"       "Trip_distance"         "Fare_amount"          
[13] "Extra"                 "MTA_tax"               "Tip_amount"            "Tolls_amount"         
[17] "Ehail_fee"             "improvement_surcharge" "Total_amount"          "Payment_type"         
[21] "Trip_type"            
dim(data)
[1] 1048575      21
#==================================================================
# Look at  the  structure of the data with the glimpse function in 
#  dplyr  package
#==================================================================
dplyr::glimpse(data)
Observations: 1,048,575
Variables: 21
$ VendorID              <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2...
$ lpep_pickup_datetime  <chr> "9/1/2015 0:02", "9/1/2015 0:04", "9/1/2015 0:01", "9/1/2015 0:02", "9/1/2015 0:00", ...
$ Lpep_dropoff_datetime <chr> "9/1/2015 0:02", "9/1/2015 0:04", "9/1/2015 0:04", "9/1/2015 0:06", "9/1/2015 0:04", ...
$ Store_and_fwd_flag    <chr> "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", ...
$ RateCodeID            <int> 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ Pickup_longitude      <dbl> -73.97948, -74.01080, -73.92141, -73.92139, -73.95548, -73.94530, -73.89088, -73.9467...
$ Pickup_latitude       <dbl> 40.68496, 40.91222, 40.76671, 40.76668, 40.71405, 40.80819, 40.74643, 40.79732, 40.69...
$ Dropoff_longitude     <dbl> -73.97943, -74.01078, -73.91441, -73.93143, -73.94441, -73.93767, -73.87692, -73.9376...
$ Dropoff_latitude      <dbl> 40.68502, 40.91221, 40.76469, 40.77158, 40.71473, 40.82120, 40.75631, 40.80452, 40.68...
$ Passenger_count       <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 6, 1, 1, 1, 1, 1, 1...
$ Trip_distance         <dbl> 0.00, 0.00, 0.59, 0.74, 0.61, 1.07, 1.43, 0.90, 1.33, 0.84, 0.80, 0.70, 1.01, 0.39, 0...
$ Fare_amount           <dbl> 7.8, 45.0, 4.0, 5.0, 5.0, 5.5, 6.5, 5.0, 6.0, 5.5, 5.0, 4.0, 5.5, 3.5, 4.0, 7.5, 7.5,...
$ Extra                 <dbl> 0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ...
$ MTA_tax               <dbl> 0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ...
$ Tip_amount            <dbl> 1.95, 0.00, 0.50, 0.00, 0.00, 1.36, 0.00, 0.00, 1.46, 0.00, 0.00, 1.06, 0.00, 0.00, 0...
$ Tolls_amount          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...
$ Ehail_fee             <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N...
$ improvement_surcharge <dbl> 0.0, 0.0, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, ...
$ Total_amount          <dbl> 9.75, 45.00, 5.80, 6.30, 6.30, 8.16, 7.80, 6.30, 8.76, 6.80, 6.30, 6.36, 6.80, 4.80, ...
$ Payment_type          <int> 1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2...
$ Trip_type             <int> 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
summary(data)
    VendorID     lpep_pickup_datetime Lpep_dropoff_datetime Store_and_fwd_flag   RateCodeID     Pickup_longitude
 Min.   :1.000   Length:1048575       Length:1048575        Length:1048575     Min.   : 1.000   Min.   :-83.32  
 1st Qu.:2.000   Class :character     Class :character      Class :character   1st Qu.: 1.000   1st Qu.:-73.96  
 Median :2.000   Mode  :character     Mode  :character      Mode  :character   Median : 1.000   Median :-73.95  
 Mean   :1.784                                                                 Mean   : 1.099   Mean   :-73.83  
 3rd Qu.:2.000                                                                 3rd Qu.: 1.000   3rd Qu.:-73.92  
 Max.   :2.000                                                                 Max.   :99.000   Max.   :  0.00  
                                                                                                                
 Pickup_latitude Dropoff_longitude Dropoff_latitude Passenger_count Trip_distance      Fare_amount     
 Min.   : 0.00   Min.   :-83.43    Min.   : 0.00    Min.   :0.000   Min.   :  0.000   Min.   :-475.00  
 1st Qu.:40.70   1st Qu.:-73.97    1st Qu.:40.70    1st Qu.:1.000   1st Qu.:  1.100   1st Qu.:   6.50  
 Median :40.75   Median :-73.94    Median :40.75    Median :1.000   Median :  2.000   Median :   9.50  
 Mean   :40.69   Mean   :-73.84    Mean   :40.69    Mean   :1.375   Mean   :  2.997   Mean   :  12.66  
 3rd Qu.:40.80   3rd Qu.:-73.91    3rd Qu.:40.79    3rd Qu.:1.000   3rd Qu.:  3.800   3rd Qu.:  15.50  
 Max.   :43.18   Max.   :  0.00    Max.   :42.80    Max.   :9.000   Max.   :246.280   Max.   : 580.50  
                                                                                                       
     Extra            MTA_tax          Tip_amount       Tolls_amount      Ehail_fee         improvement_surcharge
 Min.   :-1.0000   Min.   :-0.5000   Min.   :-12.300   Min.   :-5.5400   Length:1048575     Min.   :-0.3000      
 1st Qu.: 0.0000   1st Qu.: 0.5000   1st Qu.:  0.000   1st Qu.: 0.0000   Class :character   1st Qu.: 0.3000      
 Median : 0.5000   Median : 0.5000   Median :  0.000   Median : 0.0000   Mode  :character   Median : 0.3000      
 Mean   : 0.3396   Mean   : 0.4865   Mean   :  1.235   Mean   : 0.1282                      Mean   : 0.2919      
 3rd Qu.: 0.5000   3rd Qu.: 0.5000   3rd Qu.:  2.000   3rd Qu.: 0.0000                      3rd Qu.: 0.3000      
 Max.   :12.0000   Max.   : 0.5000   Max.   :300.000   Max.   :95.7500                      Max.   : 0.3000      
                                                                                                                 
  Total_amount      Payment_type     Trip_type    
 Min.   :-475.00   Min.   :1.000   Min.   :1.000  
 1st Qu.:   8.16   1st Qu.:1.000   1st Qu.:1.000  
 Median :  11.80   Median :2.000   Median :1.000  
 Mean   :  15.14   Mean   :1.545   Mean   :1.023  
 3rd Qu.:  18.35   3rd Qu.:2.000   3rd Qu.:1.000  
 Max.   : 581.30   Max.   :5.000   Max.   :2.000  
                                   NA's   :3      
#==================================================================
# 
#  1 check missing obervations of each column variable
#  2 sum of all missing obervations in data
#  3   Ehail_fee  has all rows missing,remove from dataset
#==================================================================
apply(is.na.data.frame(data),2,sum)
             VendorID  lpep_pickup_datetime Lpep_dropoff_datetime    Store_and_fwd_flag            RateCodeID 
                    0                     0                     0                     0                     0 
     Pickup_longitude       Pickup_latitude     Dropoff_longitude      Dropoff_latitude       Passenger_count 
                    0                     0                     0                     0                     0 
        Trip_distance           Fare_amount                 Extra               MTA_tax            Tip_amount 
                    0                     0                     0                     0                     0 
         Tolls_amount             Ehail_fee improvement_surcharge          Total_amount          Payment_type 
                    0               1048575                     0                     0                     0 
            Trip_type 
                    3 
newdata=dplyr::select(data,-Ehail_fee)
sum(is.na(newdata))
[1] 3

The average elapsed trip distance reported by the taximeter is approximately 3 miles The median elapsed trip distance reported by the taximeter is approximately 2 miles. The highest elapsed trip distance reported by the taximeter is approximately 603 miles and lowest is 0. The 603 mile appears to be an outlier. The data is skewed to the right with most observations are between zero and four.

#==================================================================
# 
# Histogram of the Distribution of Trip Distance
# with ggplot2 package
#==================================================================
p<-ggplot(newdata, aes(x =Trip_distance )) + 
  geom_histogram(fill="black",col="black",alpha=0.2,binwidth=0.02) + 
theme_minimal() + ggtitle(" Histogram of the Distribution of Trip Distance") +
  #center title
  theme(plot.title = element_text(hjust = 0.5)) +xlab("Trip Distance")+ylab("Frequency")
ggplotly(p)

Right skewed distributions are not symmetric and transformations is usually done in order to build any model that uses a normal distribution assumption.Transformations improve symmetry,linear relationships and constant variance which are usually need for models such as regression. A common transformation of right skewed data is the log transformation.

#==================================================================
# 
# Histogram of the Distribution of Log Trip Distance
# with ggplot2 package
#==================================================================
newdata=newdata%>%mutate(New_distance=log(Trip_distance+1)) 
p=ggplot(newdata, aes(x =New_distance ))+  geom_histogram(fill="black",col="black",binwidth=0.5) +
  theme_minimal() + ggtitle(" Histogram of the Distribution of Trip Distance") +
  #center title
  theme(plot.title = element_text(hjust = 0.5)) +xlab("Log of Trip Distance")+ylab("Frequency")
ggplotly(p)

The summary statistics of the transformed Trip distance shows the mean is about 3.027 and median is 2.010.

newdata%>%mutate(Transform=log(Trip_distance+1))%>%dplyr::select(Trip_distance)%>%summary%>%knitr::kable()
Trip_distance
Min. : 0.000
1st Qu.: 1.100
Median : 2.000
Mean : 2.997
3rd Qu.: 3.800
Max. :246.280

The mean and median trip distance grouped by hour of day. The maximum mean and median trip distance by hour which is 4.192 and 2.95 respectively was travelled at fifth hour.

#===========================================================================
# 
# Mean and median trip distance grouped by hour of day.
# Create Hours variable by extracting hours from the 
#  the  date and time when the meter was engaged (lpep_pickup_datetime).
#===========================================================================
newdata=newdata%>%dplyr::mutate(Hours= format(as.POSIXct(strptime(newdata$lpep_pickup_datetime,"%m/%d/%Y %H:%M",tz="")) ,format = "%H"))
newdata%>% mutate(Hours=as.numeric(Hours))%>%group_by(Hours)%>% dplyr::summarise(Mean=mean(Trip_distance),Median=median(Trip_distance),n=n())
#===========================================================================
# Find the Hour in which  the  maximum mean  Trip distance occured
#===========================================================================
newdata%>% mutate(Hours=as.numeric(Hours))%>%group_by(Hours)%>% dplyr::summarise(Mean=mean(Trip_distance),Median=median(Trip_distance),n=n())%>%
  dplyr::slice(which.max(Mean )) 
#===========================================================================
# Find the Hour in which  the  maximum  median  Trip distance occured
#===========================================================================
newdata%>% mutate(Hours=as.numeric(Hours))%>%group_by(Hours)%>% dplyr::summarise(Mean=mean(Trip_distance),Median=median(Trip_distance),n=n())%>%
  dplyr::slice(which.max(Median )) 

The new variable Tip is created by dividing Tip amount by the Total amount.The minimum Tip amount is -12.30. This appears to be an error in the data. The Tip amounts distribution is also right skewed with most observations between 0 and 10. (99%).

#==================================================================
# 
# derived variable for tip as a percentage of the total fare
#==================================================================
newdata=newdata%>%dplyr::mutate(Tip=(Tip_amount/Total_amount)*100)
length(newdata$Tip_amount[newdata$Tip_amount<10])/length(newdata$Tip_amount)
[1] 0.9917707
#==================================================================
# 
# Histogram of the Distribution of Tip_amount
# with ggplot2 package
#==================================================================
p<-ggplot2::ggplot(newdata, aes(x =Tip_amount )) + 
  geom_histogram(fill="black",col="black",alpha=0.2,binwidth=0.02) + 
theme_minimal() + ggtitle(" Histogram of the Distribution of Tip amount") +
  #center title
  theme(plot.title = element_text(hjust = 0.5)) +xlab("Tip_amount")+ylab("Frequency")
ggplotly(p)
# log transformation ,13.3 is added to prevent a case of taking log(0)
newdata=newdata%>%dplyr::mutate(New_Tip=log(Tip_amount+13.3))
                                       

The log transformation did not help out much in moving the data close to normal.We keep the old form in further analysis.

p=ggplot2::ggplot(newdata, aes(x =New_Tip )) + 
  geom_histogram(fill="black",col="black",alpha=0.2,binwidth=0.2) + 
theme_minimal() + ggtitle(" Histogram of the Distribution of New Tip amount") +
  #center title
  theme(plot.title = element_text(hjust = 0.5)) +xlab("New Tip amount")+ylab("Frequency")
ggplotly(p)
#==============================================================================
#   
# Building a Predictive Model
# Preprocessing data
# 1 There are three missing variables that will be removed at preprocessing step
# 2  Center and scale numerical columns to reduce variability
#==============================================================================
newdata=newdata[complete.cases(newdata),]
sum(is.na(newdata))
[1] 0
summary(newdata)
    VendorID     lpep_pickup_datetime Lpep_dropoff_datetime Store_and_fwd_flag   RateCodeID    Pickup_longitude
 Min.   :1.000   Length:1045608       Length:1045608        Length:1045608     Min.   :1.000   Min.   :-83.32  
 1st Qu.:2.000   Class :character     Class :character      Class :character   1st Qu.:1.000   1st Qu.:-73.96  
 Median :2.000   Mode  :character     Mode  :character      Mode  :character   Median :1.000   Median :-73.95  
 Mean   :1.785                                                                 Mean   :1.089   Mean   :-73.84  
 3rd Qu.:2.000                                                                 3rd Qu.:1.000   3rd Qu.:-73.92  
 Max.   :2.000                                                                 Max.   :6.000   Max.   :  0.00  
 Pickup_latitude Dropoff_longitude Dropoff_latitude Passenger_count Trip_distance      Fare_amount    
 Min.   : 0.00   Min.   :-83.43    Min.   : 0.00    Min.   :0.000   Min.   :  0.000   Min.   :-475.0  
 1st Qu.:40.70   1st Qu.:-73.97    1st Qu.:40.70    1st Qu.:1.000   1st Qu.:  1.100   1st Qu.:   6.5  
 Median :40.75   Median :-73.95    Median :40.75    Median :1.000   Median :  2.000   Median :  10.0  
 Mean   :40.69   Mean   :-73.85    Mean   :40.70    Mean   :1.376   Mean   :  2.997   Mean   :  12.7  
 3rd Qu.:40.80   3rd Qu.:-73.91    3rd Qu.:40.79    3rd Qu.:1.000   3rd Qu.:  3.800   3rd Qu.:  15.5  
 Max.   :43.18   Max.   :  0.00    Max.   :42.80    Max.   :9.000   Max.   :246.280   Max.   : 580.5  
     Extra            MTA_tax          Tip_amount       Tolls_amount     improvement_surcharge  Total_amount    
 Min.   :-1.0000   Min.   :-0.5000   Min.   :-12.300   Min.   :-5.5400   Min.   :-0.3000       Min.   :-475.00  
 1st Qu.: 0.0000   1st Qu.: 0.5000   1st Qu.:  0.000   1st Qu.: 0.0000   1st Qu.: 0.3000       1st Qu.:   8.16  
 Median : 0.5000   Median : 0.5000   Median :  0.000   Median : 0.0000   Median : 0.3000       Median :  11.80  
 Mean   : 0.3405   Mean   : 0.4878   Mean   :  1.238   Mean   : 0.1286   Mean   : 0.2928       Mean   :  15.18  
 3rd Qu.: 0.5000   3rd Qu.: 0.5000   3rd Qu.:  2.000   3rd Qu.: 0.0000   3rd Qu.: 0.3000       3rd Qu.:  18.36  
 Max.   :12.0000   Max.   : 0.5000   Max.   :300.000   Max.   :95.7500   Max.   : 0.3000       Max.   : 581.30  
  Payment_type     Trip_type       Hours                Tip         
 Min.   :1.000   Min.   :1.00   Length:1045608     Min.   :  0.000  
 1st Qu.:1.000   1st Qu.:1.00   Class :character   1st Qu.:  0.000  
 Median :2.000   Median :1.00   Mode  :character   Median :  0.000  
 Mean   :1.544   Mean   :1.02                      Mean   :  6.573  
 3rd Qu.:2.000   3rd Qu.:1.00                      3rd Qu.: 16.667  
 Max.   :5.000   Max.   :2.00                      Max.   :100.000  
#==================================================================
#Spliting training set into two parts based on outcome:
# Training set which 70% and Test set which 30% of the data
#==================================================================
index <- createDataPartition(newdata$Tip_amount, p=0.70, list=FALSE)
trainSet <- newdata[ index,]
testSet <- newdata[-index,]
sum(is.na(trainSet))
[1] 0
sum(is.na(testSet))
[1] 0
sum(is.na(newdata))
[1] 0

There are very high positive correlations between Total amount and Trip distance,of course which makes sense Total amount and Fare amount that passengers who travelled longer distances were charged more. There is also a significant positive correlation between Total amount and Tip amount. Passengers who travelled longer distances and paid higher fares were more likely to tip.

#==================================================================
#  Exploratory data analysis
# Determine correlation between variables
#==================================================================
newdata%>%dplyr::select(New_distance,Fare_amount,improvement_surcharge,Tolls_amount,Tip_amount,MTA_tax
                        ,Extra,Passenger_count,VendorID, Tip,Total_amount)%>%cor
                      New_distance  Fare_amount improvement_surcharge Tolls_amount   Tip_amount     MTA_tax
New_distance           1.000000000  0.782704516           0.061096337  0.253663550  0.363260074  0.05577728
Fare_amount            0.782704516  1.000000000          -0.053465833  0.284537088  0.395533646 -0.07284627
improvement_surcharge  0.061096337 -0.053465833           1.000000000 -0.001387602  0.020457209  0.96242103
Tolls_amount           0.253663550  0.284537088          -0.001387602  1.000000000  0.190925008 -0.02705827
Tip_amount             0.363260074  0.395533646           0.020457209  0.190925008  1.000000000  0.01258670
MTA_tax                0.055777284 -0.072846266           0.962421031 -0.027058271  0.012586701  1.00000000
Extra                 -0.019493758 -0.050765468           0.153176317 -0.030179026 -0.006751906  0.15466893
Passenger_count        0.015683087  0.012817630           0.001881064  0.008503446  0.005471641  0.00137572
VendorID               0.004464695  0.007812296          -0.015807901  0.006219987 -0.007280304 -0.02376706
Tip                    0.121205434  0.087938246           0.063133360  0.044409632  0.720463834  0.06393077
Total_amount           0.779603050  0.976113587          -0.026739200  0.365396798  0.571074413 -0.04716232
                             Extra Passenger_count     VendorID          Tip Total_amount
New_distance          -0.019493758     0.015683087  0.004464695  0.121205434  0.779603050
Fare_amount           -0.050765468     0.012817630  0.007812296  0.087938246  0.976113587
improvement_surcharge  0.153176317     0.001881064 -0.015807901  0.063133360 -0.026739200
Tolls_amount          -0.030179026     0.008503446  0.006219987  0.044409632  0.365396798
Tip_amount            -0.006751906     0.005471641 -0.007280304  0.720463834  0.571074413
MTA_tax                0.154668930     0.001375720 -0.023767065  0.063930768 -0.047162317
Extra                  1.000000000     0.020607742  0.006560547  0.011569255 -0.015422984
Passenger_count        0.020607742     1.000000000  0.080734881  0.001885730  0.013657879
VendorID               0.006560547     0.080734881  1.000000000 -0.008829697  0.005745142
Tip                    0.011569255     0.001885730 -0.008829697  1.000000000  0.233311439
Total_amount          -0.015422984     0.013657879  0.005745142  0.233311439  1.000000000
ggplot(trainSet , aes(Tip, Tip_amount))+geom_point(color="purple")+
  ggtitle('Tip vs Tip_amount')+
  xlab('Tip')+ylab('Tip_amount')+
  stat_smooth(method=lm, colour='black',span=0.2)

There exist a strong association between Tip and Tip amount.

ggplot(trainSet , aes(Tip, Fare_amount))+geom_point(color="purple")+
  ggtitle('Tip vs Fare_amount')+
  xlab('Tip')+ylab('Fare_amount')+
  stat_smooth(method=lm, colour='black',span=0.2)

ggplot(trainSet , aes(Tip, Trip_distance))+geom_point(color="purple")+
  ggtitle('Tip vs Trip_distance')+
  xlab('Tip')+ylab('Trip_distance')+
  stat_smooth(method=lm, colour='black',span=0.2)

The figure shows there are a few outlier points ,where the Tip was low for a very long Trip distance

ggplot(trainSet , aes(Tip, New_distance))+geom_point(color="purple")+
  ggtitle('Tip vs  New_distance')+
  xlab('Tip')+ylab('New_distance')+
  stat_smooth(method=lm, colour='black',span=0.2)

ggplot(trainSet , aes(Tip, Tolls_amount))+geom_point(color="purple")+
  ggtitle('Tip vs Tolls_amount')+
  xlab('Tip')+ylab('Tolls_amount')+
  stat_smooth(method=lm, colour='black',span=0.2)

The Figure does reveal a weak positive association between Tolls amount and Tip given.

#==================================================================
#  Do feature selection using Generalized Linear Model
#==================================================================
control <- trainControl(method="repeatedcv", number=10, repeats=5)
my_glm<- train(trainSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax","improvement_surcharge",
                          "Extra","Passenger_count","VendorID")], trainSet$Tip,
                    method = "glm",
                    preProc = c("center", "scale"),
                    trControl = control)
Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.Setting row names on a tibble is deprecated.
ggplot(varImp(my_glm, scale = FALSE))+ggtitle("Variable Importance using GLM")+theme_minimal()

From the variable importance plot, we drop can drop improvement surcharge since it has have very little predictive power for Tip.

#===============================================================================
#  Build a  Generalized Linear Model For with Stepwise Selection prediction
#===============================================================================
control <- trainControl(method="repeatedcv", number=10, repeats=5)
step_glm<- train(trainSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                          "Extra","Passenger_count","VendorID")], trainSet$Tip,
                    method = "glmStepAIC",
                    preProc = c("center", "scale"),
                    trControl = control)
pred<-predict(step_glm,testSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                          "Extra","VendorID")])
Error in predict(step_glm, testSet[, c("Fare_amount", "Trip_distance",  : 
  object 'step_glm' not found
# Print, plot variable importance

print(varImp(my_glm, scale = FALSE))
plot(varImp(my_glm, scale = FALSE), main="Variable Importance using GLM")
# Mean Squared Error

sqrt(mean(pred- testSet$Tip)^2)
#===============================================================================
#  Build a  Partial Least Squares Model 
#===============================================================================

# Partial Least Squares is one way to reduce dimension of the predictors used in the model. It identifies
#linear combinations,or directions, that best represent the predictors in the data.The directions are identified in 
# unsupervised way since the outcome variable is not in identifying the principal
# component directions.The predictors are preprocessed by centering and scaling.
# PLS will seek
#directions of maximum variation while simultaneously considering correlation with the response.


control <- trainControl(method="repeatedcv", number=10, repeats=5)

plsfit=train(trainSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                  "Extra","VendorID","Passenger_count")], trainSet$Tip,
      method = "glmStepAIC",tuneLength = 20,
      preProc = c("center", "scale"),
      trControl = control)






# Predict using test data


pred<-predict(plsfit,testSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                            "Extra","VendorID")])

my_data=data_frame(predicted=pred,observed=testSet$Tip)

ggplot(my_data,aes(predicted,observed))+geom_point()+geom_smooth(method=lm)+ggtitle('PLS')
# Print, plot variable importance
print(varImp(plsfit, scale = FALSE))
plot(varImp(plsfit, scale = FALSE), main="Variable Importance using PLS")
# Mean Squared Error

sqrt(mean(pred- testSet$Tip)^2)
#===============================================================================
#  Build Penalized linear regression models Model 
# Lasso (least absolute shrinkage and selection operator)
#===============================================================================
# The LASSO  penalizes the model  for having many predictors by shrinking the coefficients of 
# 
# those predictors with little variation to zero thereby reducing the dimension of the model.
lassoGrid <- expand.grid(.fraction = seq(.05, 1, length = 20))
control <- trainControl(method="repeatedcv", number=10, repeats=5)
set.seed(100)
lassofit=train(trainSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                  "Extra","VendorID")], trainSet$Tip,
      method = "lasso",tuneGrid = lassoGrid,
      preProc = c("center", "scale"),
      trControl = control)
Setting row names on a tibble is deprecated.
# Predict using test data
pred<-predict(lassofit,testSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                                  "Extra","VendorID")])
my_data=data_frame(predicted=pred,observed=testSet$Tip)
ggplot(my_data,aes(predicted,observed))+geom_point()+geom_smooth(method=lm)+ggtitle('LASSO Model')

print(varImp(lassofit, scale = FALSE), main="Variable Importance using lasso")
argument is not numeric or logical: returning NAError in model.frame.default(formula = y ~ x, na.action = na.omit, drop.unused.levels = TRUE) : 
  invalid type (list) for variable 'y'
plot(varImp(lassofit, scale = FALSE), main="Variable Importance using lasso")
argument is not numeric or logical: returning NAError in model.frame.default(formula = y ~ x, na.action = na.omit, drop.unused.levels = TRUE) : 
  invalid type (list) for variable 'y'
plot(lassofit)

#Extract coefficients of final model
predict.enet(lassofit$finalModel, type='coefficients', s=lassofit$bestTune$fraction, mode='fraction')
$s
[1] 1

$fraction
0 
1 

$mode
[1] "fraction"

$coefficients
  Fare_amount Trip_distance  Tolls_amount       MTA_tax         Extra      VendorID 
   0.22877995    0.65357915    0.13175181    0.57739305    0.04522287   -0.07149811 
# Mean Squared Error
sqrt(mean(pred- testSet$Tip)^2)
[1] 0.0003035775

I ran out memory after several attempts to fit a random forest model.

#===============================================================================
#  Random Forest linear regression models Model 
# 
#===============================================================================



control <- trainControl(method="repeatedcv", number=10, repeats=5)



rf_fit<-train(trainSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                  "Extra","VendorID")], trainSet$Tip,
      method = "rf", ntrees = 1000,importance = TRUE,
      preProc = c("center", "scale"),
      trControl = control)

# Predict using the test data

pred<-predict(rf_fit,testSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                                  "Extra","VendorID")])

my_data=adata_frame(predicted=pred,observed=testSet$Tip)

ggplot(my_data,aes(predicted,observed))+geom_point()+geom_smooth(method=lm)+ggtitle('Random Forest Model')
plot(varImp(rf_fit, scale = FALSE),main="Variable Importance using RF")
# Mean Squared Error

sqrt(mean(pred- testSet$Tip)^2)

I ran out memory after several attempts to fit a gradient boosting machine.

#===============================================================================
# Gradient Boosting Machine  Model 
# 
#===============================================================================

# To tune over interaction depth, number of trees, and shrinkage first define a tuning grid,
#then train over this grid


gbmGrid <- expand.grid(.interaction.depth = c(2,5,8),
                       .n.trees = c(500, 1000,2000,5000),
                       .shrinkage = c(0.01, 0.1),
                       .n.minobsinnode=c(5,10,15))

control <- trainControl(method="repeatedcv", number=10, repeats=5)


gbm_fit<-train(trainSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                    "Extra","VendorID")], trainSet$Tip,
        method = "gbm",verbose=F,tuneGrid = gbmGrid,
        preProc = c("center", "scale"),
        trControl = control)

# Predict using the test data

pred<-predict(gbm_fit,testSet[,c("Fare_amount","Trip_distance","Tolls_amount","MTA_tax",
                                "Extra","VendorID")])

my_data=adata_frame(predicted=pred,observed=testSet$Tip)


ggplot(my_data,aes(predicted,observed))+geom_point()+geom_smooth(method=lm)+ggtitle('Boosting')
plot(varImp(gbm_fit, scale = FALSE),main="Variable Importance using Boosting")
# Mean Squared Error

sqrt(mean(pred- testSet$Tip)^2)

We constructed a derived variable of time difference by subtracting pick up time from drop off time.The average speed of any trip was obtained by dividing distance covered by the time take. The time is converted to seconds to hours which is standard form.The Overall average speed off all trips is about 13 miles per hour.

#Build a derived variable representing the average speed over the course of a trip.
#Average Speed=(distance)/time
# 1 create a TimeDifference variable by subtracting  lpep_pickup_datetime
# from Lpep_dropoff_datetime using the difftime function.
#2 Extract the  numeric values  in difference  in time(in seconds) by 
# by the stri_extract_all_regex function
# 3 unlist the result which is characer and convert to numeric
# 4  convert time  in seconds  to hours by multiplying by 0.000277778
# This standardizes speed in scientific units which is miles per hour
# 5 Time difference greater than zero seconds were selected in computing the 
#  speed to avoid undefined mathematical expressions
# 6 Speed variable=Trip distance/ TimeDifference
# Average speed=mean of the Speed variable
# The Average speed over all of september is approximately 5.844  meters per second
newdata=newdata%>%mutate(TimeDifference=
              as.numeric(unlist( stri_extract_all_regex(difftime(as.POSIXct(Lpep_dropoff_datetime, format="%m/%d/%Y %H:%M", tz="")
                                                                 , as.POSIXct(lpep_pickup_datetime, format="%m/%d/%Y %H:%M", tz="")
                                                                 , tz="",units = , "secs"), "[0-9]+"))))%>%mutate(Time=TimeDifference*0.000277778)
newdata=newdata[newdata$Time>0,]
#newdata=newdata%>%mutate(Speed=Trip_distance/TimeDifference)%>%dplyr::filter[newdata,TimeDifference >0]
# The filter approach seems not to recognise TimeDifference variable just created.
newdata=newdata%>%mutate(Speed=Trip_distance/Time)

The overall average speed for all trips by green taxis is found to be 13.06 miles per hour.

newdata%>%dplyr::summarise(Average_Speed=mean(Speed))

The average trip speeds are materially different in all weeks of September.We tested for the difference in means between the three weeks in September per the dataset by an using Kruskal-Wallis and ANOVA model.Since the trip distance is right skewed,we proceed further to use a non-parametric test like Kruskal-Wallis to test the differences between the speeds over the three weeks in September.Both parametric Anova without any transformations gives a similar outcome like the non-parametric Kruskal-Wallis test.We found thet there is asignificant difference in the average Speed by week travelled in September(p-value < 2.2e-16).The first week had the highest average speed of about 13.75. Labor weekend occurred in the first week of Septtember 2015,that could have contributed to the Higher speed in the first week of September as a lot of people were in a rush to get to their destinations For the holidays.

#  Test of the mean and Median of average trip speeds
# in all weeks of September
# 1 Create a derived variable Week for the number of weeks in Septemeber
#  present in the data
# 2  We then group speed by week 
# 3 Test for difference in Mean speed for the weeks in September.
# 4 We will perform Kruskal Wallis nonparametric test and compare with parametric ANOVA 
#test of  the mean Speeds in the 3 weeks in September. The ANOVA test assumes the data is
# normally distributed wheras Kruskal-Wallis test does not.
week1=c("09/01/2015","09/02/2015","09/03/2015","09/04/2015","09/05/2015","09/06/2015","09/07/2015")
week2=c("09/08/2015","09/09/2015","09/10/2015","09/11/2015","09/12/2015","09/13/2015","09/14/2015")
week3=c("09/15/2015","09/16/2015","09/17/2015","09/18/2015","09/19/2015","09/20/2015","09/21/2015")
newdata=newdata%>%
  dplyr::mutate(dates= format(as.POSIXct(strptime(newdata$lpep_pickup_datetime,"%m/%d/%Y %H:%M",tz="")) ,format = "%m/%d/%Y"))
newdata=newdata %>%  
  mutate(Week = case_when(.$dates %in% week1 ~ 1, .$dates %in% week2 ~ 2,.$dates %in% week3 ~ 3)) 
newdata
# Find the mean speed in each in September
newdata %>%group_by(Week)%>% dplyr::summarise(mean=mean(Speed))
NA
newdata %>%dplyr::select( Week,Speed)%>%mutate(Week=factor(Week))%>%kruskal.test()%>%tidy()
some elements of 'x' are not numeric and will be coerced to numeric
newdata %>%dplyr::select( Week,Speed)%>%lm(formula = Speed ~ factor(Week ))%>%anova()%>%tidy()

A plausible Hypothesis would be to test if speed is associated with time of the day.This can be done by building a Linear regression model. There exist a significant association between Speed and Hour of the day. The coefficient of Hours is negative which indicates a negative relationship between the two variables. For every unit increase in Hour of the day,the Speed decreases by a factor of about 0.106343.

ggplot(newdata, aes(Hours, Speed))+geom_point(color="purple")+
  ggtitle('Hours vs Speed')+
  xlab('Hours')+ylab('Speed')+
  stat_smooth(method=lm, colour='black',span=0.2)

newdata %>%dplyr::select(Speed,Hours)%>%mutate( Hours=as.numeric( Hours))%>%
  lm(formula = Speed ~ (Hours ))%>%summary()

Call:
lm(formula = Speed ~ (Hours), data = .)

Residuals:
   Min     1Q Median     3Q    Max 
 -14.5   -3.7   -1.3    2.1 4157.8 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 14.489476   0.024647  587.88   <2e-16 ***
Hours       -0.106343   0.001637  -64.94   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 11.42 on 1033531 degrees of freedom
Multiple R-squared:  0.004064,  Adjusted R-squared:  0.004063 
F-statistic:  4218 on 1 and 1033531 DF,  p-value: < 2.2e-16
fit_glm=glm( Speed ~ as.numeric(Hours), data=newdata)
tidy(fit_glm)
head(augment(fit_glm))
glance(fit_glm)

Other insights one would consider given ample time include the following:

  1. Spatial data analysis with get_map and ggmap to determine if the green taxis followed the citys order to pick up paasengers from Manhattan eclusionary zone.
  2. Building predictive models with deep neural networks which is known to have better predictive power.

  3. Showing interactive plots to assist in detecting any underlying patterns of the data.

LS0tDQp0aXRsZTogIk5ldyBZb3JrIENpdHkgVGF4aSBhbmQgTGltb3VzaW5lIGNvbW1pc3Npb24gRGF0YSBBbmFseXNpcyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjIE5hbmEgQWt3YXNpIEFiYXlpZSBCb2F0ZW5nDQoNClRoZSBDb2RlIGJlbG93IGxvYWRzIGFsbCB0aGUgcGFja2FnZXMgdGhhdCB3b3VsZCBiZSByZXF1aXJlZCBmb3IgdGhpcyBwcm9qZWN0LklmIGEgcGFja2FnZSBpcyBub3QgYXZhaWxhYmxlDQppbiB0aGUgbGlicmFyeSxpdCB3aWxsIGJlIGRvd25sb2FkZWQgYW5kIGxvYWRlZC4NCg0KYGBge3J9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojICBUaGUgZm9sbHdpbmcgY29kZSA6DQojIDEgIExvYWQgYWxsIHBhY2thZ2VzIHJlcXVpcmVkIGZvciB0aGUgYW5hbHlzaXMgYXQgdGhlIHNhbWUgdGltZQ0KIyAyICBDaGVjayBpZiBhIHJlcXVpcmVkIHBhY2thZ2UgaXMgbm90IGFscmVhZHkgaW5zdGFsbGVkLg0KIzMgICBJZiBhIHJlcXVpcmVkIHBhY2thZ2UgaXMgbm90IGFscmVhZHkgaW5zdGFsbGVkLCB0aGUgaW5zdGFsbCB0aGF0dCBwYWNrYWdlDQojIA0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpsaXN0PWMoInRpZHl2ZXJzZSIsInN0cmluZ3IiLCJmb3JjYXRzIiwiZ2dtYXAiLCJydmVzdCIsInRtIiwiU25vd2JhbGxDIiwiZHBseXIiLCJjYWxpYnJhdGUiLCJkb1BhcmFsbGVsIiwNCiAgICAgICAic3RyaW5naSIsImdncGxvdDIiLCJtYXBzIiwiaHR0ciIsInJzZG14IiwiZGV2dG9vbHMiLCJwbHlyIiwiZHBseXIiLCJnZ3Bsb3QyIiwiY2FyZXQiLCJlbGFzdGljbmV0IiwNCiAgICAgICAibWFncml0dHIiLCJicm9vbSIsImdsbW5ldCIsIkhtaXNjIiwna25pdHInLCJSU1FMaXRlIiwiUkFOTiIsImx1YnJpZGF0ZSIsImdndmlzIiwicGxvdGx5IiwibGFycyIsDQogICAgICAgImdnY29ycnBsb3QiLCJHR2FsbHkiLCJST0NSIiwibGF0dGljZSIsImNhciIsImNvcnJncmFtIiwiZ2djb3JycGxvdCIsInNxbGRmIiwicGFyYWxsZWwiKQ0KDQpsaXN0X3BhY2thZ2VzIDwtIGxpc3QNCm5ldy5wYWNrYWdlcyA8LSBsaXN0X3BhY2thZ2VzWyEobGlzdF9wYWNrYWdlcyAlaW4lIGluc3RhbGxlZC5wYWNrYWdlcygpWywiUGFja2FnZSJdKV0NCmlmKGxlbmd0aChuZXcucGFja2FnZXMpKSBpbnN0YWxsLnBhY2thZ2VzKG5ldy5wYWNrYWdlcykNCg0Kc2FwcGx5KGxpc3QsIHJlcXVpcmUsIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkNCg0KDQpgYGANCg0KYGBge3J9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojICBTZXQgdXAgcGFyYWxsZWwgcHJvY2Vzc2luZw0KIyBsZWF2ZSB0d28gY29yZXMgZm9yIG9wZXJhdGluZyBzeXN0ZW0NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KY2x1c3RlciA8LSBtYWtlQ2x1c3RlcihkZXRlY3RDb3JlcygpIC0gMikgDQpyZWdpc3RlckRvUGFyYWxsZWwoY2x1c3RlcikNCg0KYGBgDQoNCg0KDQpUaGUgIFNlcHRlbWJlciAyMDE1IGRhdGEgZ3JlZW4gdGF4aSAgY29udGFpbnMgMTA0ODU3NSAgcm93cyAgYW5kICAgICAgMjEgY29sdW1ucy4NCg0KDQpgYGB7cn0NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgbG9hZCB0aGUgZG93bmxvYWRlZCBkYXRhIHdpdGggdGhlIHJlYWRyIHBhY2thZ2UNCiMgIGRpbSBmdW5jdGlvbiBwcm9kdWNlcyB0aGUgZGltZW5zaW9uIG9mIHRoZSBkYXRhDQojIHRoZSAgU2VwdGVtYmVyIDIwMTUgZGF0YSBjb250YWlucyAxMDQ4NTc1ICByb3dzICBhbmQgICAgICAyMSBjb2x1bW5zDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCmRhdGE9cmVhZHI6OnJlYWRfY3N2KCJDOi9Vc2Vycy9HdWNjaTE0OC9Eb2N1bWVudHMvRGF0YU1pbmluZ3NjaWVuY2UvQ2FwaXRhbG9uZS9ncmVlbl90cmlwZGF0YV8yMDE1LTA5LmNzdiIpDQoNCm5hbWVzKGRhdGEpDQoNCmRpbShkYXRhKQ0KYGBgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmBgYHtyfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBMb29rIGF0ICB0aGUgIHN0cnVjdHVyZSBvZiB0aGUgZGF0YSB3aXRoIHRoZSBnbGltcHNlIGZ1bmN0aW9uIGluIA0KIyAgZHBseXIgIHBhY2thZ2UNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KZHBseXI6OmdsaW1wc2UoZGF0YSkNCg0Kc3VtbWFyeShkYXRhKQ0KDQoNCmBgYA0KDQpgYGB7cn0NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgDQojICAxIGNoZWNrIG1pc3Npbmcgb2JlcnZhdGlvbnMgb2YgZWFjaCBjb2x1bW4gdmFyaWFibGUNCiMgIDIgc3VtIG9mIGFsbCBtaXNzaW5nIG9iZXJ2YXRpb25zIGluIGRhdGENCiMgIDMgICBFaGFpbF9mZWUgIGhhcyBhbGwgcm93cyBtaXNzaW5nLHJlbW92ZSBmcm9tIGRhdGFzZXQNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KDQoNCmFwcGx5KGlzLm5hLmRhdGEuZnJhbWUoZGF0YSksMixzdW0pDQoNCg0KbmV3ZGF0YT1kcGx5cjo6c2VsZWN0KGRhdGEsLUVoYWlsX2ZlZSkNCg0Kc3VtKGlzLm5hKG5ld2RhdGEpKQ0KYGBgDQoNCg0KDQpUaGUgYXZlcmFnZSBlbGFwc2VkIHRyaXAgZGlzdGFuY2UgIHJlcG9ydGVkIGJ5IHRoZSB0YXhpbWV0ZXIgaXMgYXBwcm94aW1hdGVseSAzIG1pbGVzIFRoZSBtZWRpYW4gZWxhcHNlZCB0cmlwIGRpc3RhbmNlICByZXBvcnRlZCBieSB0aGUgdGF4aW1ldGVyIGlzIGFwcHJveGltYXRlbHkgMiBtaWxlcy4gVGhlIGhpZ2hlc3QgIGVsYXBzZWQgdHJpcCBkaXN0YW5jZSAgcmVwb3J0ZWQgYnkgdGhlIHRheGltZXRlciBpcyBhcHByb3hpbWF0ZWx5IDYwMyBtaWxlcyBhbmQgbG93ZXN0IGlzIDAuIFRoZSA2MDMgbWlsZSBhcHBlYXJzIHRvIGJlIGFuIG91dGxpZXIuIFRoZSBkYXRhIGlzIHNrZXdlZCB0byB0aGUgcmlnaHQgd2l0aCBtb3N0IG9ic2VydmF0aW9ucyBhcmUgYmV0d2VlbiB6ZXJvIGFuZCBmb3VyLg0KYGBge3J9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIA0KIyBIaXN0b2dyYW0gb2YgdGhlIERpc3RyaWJ1dGlvbiBvZiBUcmlwIERpc3RhbmNlDQojIHdpdGggZ2dwbG90MiBwYWNrYWdlDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCnA8LWdncGxvdChuZXdkYXRhLCBhZXMoeCA9VHJpcF9kaXN0YW5jZSApKSArIA0KICBnZW9tX2hpc3RvZ3JhbShmaWxsPSJibGFjayIsY29sPSJibGFjayIsYWxwaGE9MC4yLGJpbndpZHRoPTAuMDIpICsgDQp0aGVtZV9taW5pbWFsKCkgKyBnZ3RpdGxlKCIgSGlzdG9ncmFtIG9mIHRoZSBEaXN0cmlidXRpb24gb2YgVHJpcCBEaXN0YW5jZSIpICsNCiAgI2NlbnRlciB0aXRsZQ0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSkgK3hsYWIoIlRyaXAgRGlzdGFuY2UiKSt5bGFiKCJGcmVxdWVuY3kiKQ0KDQoNCmdncGxvdGx5KHApDQpgYGANCg0KDQoNClJpZ2h0IHNrZXdlZCBkaXN0cmlidXRpb25zIGFyZSBub3Qgc3ltbWV0cmljIGFuZCB0cmFuc2Zvcm1hdGlvbnMgaXMgdXN1YWxseSBkb25lIGluIG9yZGVyIHRvIGJ1aWxkIGFueSBtb2RlbCB0aGF0IHVzZXMgYSBub3JtYWwgZGlzdHJpYnV0aW9uIGFzc3VtcHRpb24uVHJhbnNmb3JtYXRpb25zIGltcHJvdmUgc3ltbWV0cnksbGluZWFyICByZWxhdGlvbnNoaXBzIGFuZCBjb25zdGFudCB2YXJpYW5jZSB3aGljaCBhcmUgdXN1YWxseSBuZWVkIGZvciBtb2RlbHMgc3VjaCBhcyByZWdyZXNzaW9uLiBBIGNvbW1vbiB0cmFuc2Zvcm1hdGlvbiBvZiByaWdodCBza2V3ZWQgZGF0YSBpcyB0aGUgbG9nIHRyYW5zZm9ybWF0aW9uLiANCg0KYGBge3J9DQoNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgDQojIEhpc3RvZ3JhbSBvZiB0aGUgRGlzdHJpYnV0aW9uIG9mIExvZyBUcmlwIERpc3RhbmNlDQojIHdpdGggZ2dwbG90MiBwYWNrYWdlDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCm5ld2RhdGE9bmV3ZGF0YSU+JW11dGF0ZShOZXdfZGlzdGFuY2U9bG9nKFRyaXBfZGlzdGFuY2UrMSkpIA0KDQpwPWdncGxvdChuZXdkYXRhLCBhZXMoeCA9TmV3X2Rpc3RhbmNlICkpKyAgZ2VvbV9oaXN0b2dyYW0oZmlsbD0iYmxhY2siLGNvbD0iYmxhY2siLGJpbndpZHRoPTAuNSkgKw0KICB0aGVtZV9taW5pbWFsKCkgKyBnZ3RpdGxlKCIgSGlzdG9ncmFtIG9mIHRoZSBEaXN0cmlidXRpb24gb2YgVHJpcCBEaXN0YW5jZSIpICsNCiAgI2NlbnRlciB0aXRsZQ0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSkgK3hsYWIoIkxvZyBvZiBUcmlwIERpc3RhbmNlIikreWxhYigiRnJlcXVlbmN5IikNCg0KZ2dwbG90bHkocCkNCg0KDQpgYGANCg0KDQpUaGUgc3VtbWFyeSBzdGF0aXN0aWNzIG9mIHRoZSB0cmFuc2Zvcm1lZCBUcmlwIGRpc3RhbmNlIHNob3dzIHRoZSBtZWFuIGlzIGFib3V0IDMuMDI3IGFuZCBtZWRpYW4gaXMgMi4wMTAuDQoNCg0KYGBge3J9DQpuZXdkYXRhJT4lbXV0YXRlKFRyYW5zZm9ybT1sb2coVHJpcF9kaXN0YW5jZSsxKSklPiVkcGx5cjo6c2VsZWN0KFRyaXBfZGlzdGFuY2UpJT4lc3VtbWFyeSU+JWtuaXRyOjprYWJsZSgpDQpgYGANCg0KVGhlIG1lYW4gYW5kIG1lZGlhbiB0cmlwIGRpc3RhbmNlIGdyb3VwZWQgYnkgaG91ciBvZiBkYXkuIFRoZSBtYXhpbXVtIG1lYW4gIGFuZCBtZWRpYW4gdHJpcCBkaXN0YW5jZSBieSBob3VyIA0KIHdoaWNoIGlzIDQuMTkyIGFuZCAyLjk1IHJlc3BlY3RpdmVseSB3YXMgdHJhdmVsbGVkIGF0IGZpZnRoIGhvdXIuDQoNCmBgYHtyfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyANCiMgTWVhbiBhbmQgbWVkaWFuIHRyaXAgZGlzdGFuY2UgZ3JvdXBlZCBieSBob3VyIG9mIGRheS4NCiMgQ3JlYXRlIEhvdXJzIHZhcmlhYmxlIGJ5IGV4dHJhY3RpbmcgaG91cnMgZnJvbSB0aGUgDQojICB0aGUgIGRhdGUgYW5kIHRpbWUgd2hlbiB0aGUgbWV0ZXIgd2FzIGVuZ2FnZWQgKGxwZXBfcGlja3VwX2RhdGV0aW1lKS4NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KbmV3ZGF0YT1uZXdkYXRhJT4lZHBseXI6Om11dGF0ZShIb3Vycz0gZm9ybWF0KGFzLlBPU0lYY3Qoc3RycHRpbWUobmV3ZGF0YSRscGVwX3BpY2t1cF9kYXRldGltZSwiJW0vJWQvJVkgJUg6JU0iLHR6PSIiKSkgLGZvcm1hdCA9ICIlSCIpKQ0KDQpuZXdkYXRhJT4lIG11dGF0ZShIb3Vycz1hcy5udW1lcmljKEhvdXJzKSklPiVncm91cF9ieShIb3VycyklPiUgZHBseXI6OnN1bW1hcmlzZShNZWFuPW1lYW4oVHJpcF9kaXN0YW5jZSksTWVkaWFuPW1lZGlhbihUcmlwX2Rpc3RhbmNlKSxuPW4oKSkNCg0KDQpgYGANCg0KDQoNCg0KDQpgYGB7cn0NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgRmluZCB0aGUgSG91ciBpbiB3aGljaCAgdGhlICBtYXhpbXVtIG1lYW4gIFRyaXAgZGlzdGFuY2Ugb2NjdXJlZA0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpuZXdkYXRhJT4lIG11dGF0ZShIb3Vycz1hcy5udW1lcmljKEhvdXJzKSklPiVncm91cF9ieShIb3VycyklPiUgZHBseXI6OnN1bW1hcmlzZShNZWFuPW1lYW4oVHJpcF9kaXN0YW5jZSksTWVkaWFuPW1lZGlhbihUcmlwX2Rpc3RhbmNlKSxuPW4oKSklPiUNCiAgZHBseXI6OnNsaWNlKHdoaWNoLm1heChNZWFuICkpIA0KYGBgDQoNCg0KDQoNCmBgYHtyfQ0KDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEZpbmQgdGhlIEhvdXIgaW4gd2hpY2ggIHRoZSAgbWF4aW11bSAgbWVkaWFuICBUcmlwIGRpc3RhbmNlIG9jY3VyZWQNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KbmV3ZGF0YSU+JSBtdXRhdGUoSG91cnM9YXMubnVtZXJpYyhIb3VycykpJT4lZ3JvdXBfYnkoSG91cnMpJT4lIGRwbHlyOjpzdW1tYXJpc2UoTWVhbj1tZWFuKFRyaXBfZGlzdGFuY2UpLE1lZGlhbj1tZWRpYW4oVHJpcF9kaXN0YW5jZSksbj1uKCkpJT4lDQogIGRwbHlyOjpzbGljZSh3aGljaC5tYXgoTWVkaWFuICkpIA0KYGBgDQoNCg0KDQoNCg0KVGhlIG5ldyB2YXJpYWJsZSBUaXAgaXMgY3JlYXRlZCBieSBkaXZpZGluZyBUaXAgYW1vdW50IGJ5IHRoZSBUb3RhbCBhbW91bnQuVGhlIG1pbmltdW0gVGlwIGFtb3VudCBpcyAtMTIuMzAuIFRoaXMgYXBwZWFycyB0byANCmJlIGFuIGVycm9yIGluIHRoZSBkYXRhLiBUaGUgVGlwIGFtb3VudHMgZGlzdHJpYnV0aW9uIGlzIGFsc28gcmlnaHQgc2tld2VkICB3aXRoIG1vc3Qgb2JzZXJ2YXRpb25zIGJldHdlZW4gMCBhbmQgMTAuICg5OSUpLg0KDQoNCg0KYGBge3J9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIA0KIyBkZXJpdmVkIHZhcmlhYmxlIGZvciB0aXAgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSB0b3RhbCBmYXJlDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCg0KbmV3ZGF0YT1uZXdkYXRhJT4lZHBseXI6Om11dGF0ZShUaXA9KFRpcF9hbW91bnQvVG90YWxfYW1vdW50KSoxMDApDQoNCmxlbmd0aChuZXdkYXRhJFRpcF9hbW91bnRbbmV3ZGF0YSRUaXBfYW1vdW50PDEwXSkvbGVuZ3RoKG5ld2RhdGEkVGlwX2Ftb3VudCkNCmBgYA0KDQpgYGB7cn0NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgDQojIEhpc3RvZ3JhbSBvZiB0aGUgRGlzdHJpYnV0aW9uIG9mIFRpcF9hbW91bnQNCiMgd2l0aCBnZ3Bsb3QyIHBhY2thZ2UNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KcDwtZ2dwbG90Mjo6Z2dwbG90KG5ld2RhdGEsIGFlcyh4ID1UaXBfYW1vdW50ICkpICsgDQogIGdlb21faGlzdG9ncmFtKGZpbGw9ImJsYWNrIixjb2w9ImJsYWNrIixhbHBoYT0wLjIsYmlud2lkdGg9MC4wMikgKyANCnRoZW1lX21pbmltYWwoKSArIGdndGl0bGUoIiBIaXN0b2dyYW0gb2YgdGhlIERpc3RyaWJ1dGlvbiBvZiBUaXAgYW1vdW50IikgKw0KICAjY2VudGVyIHRpdGxlDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKSAreGxhYigiVGlwX2Ftb3VudCIpK3lsYWIoIkZyZXF1ZW5jeSIpDQoNCmdncGxvdGx5KHApDQoNCg0KYGBgDQoNCmBgYHtyfQ0KIyBsb2cgdHJhbnNmb3JtYXRpb24gLDEzLjMgaXMgYWRkZWQgdG8gcHJldmVudCBhIGNhc2Ugb2YgdGFraW5nIGxvZygwKQ0KDQpuZXdkYXRhPW5ld2RhdGElPiVkcGx5cjo6bXV0YXRlKE5ld19UaXA9bG9nKFRpcF9hbW91bnQrMTMuMykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmBgYA0KDQoNClRoZSBsb2cgdHJhbnNmb3JtYXRpb24gZGlkIG5vdCBoZWxwIG91dCBtdWNoIGluIG1vdmluZyB0aGUgZGF0YSBjbG9zZSB0byBub3JtYWwuV2Uga2VlcCB0aGUgb2xkIGZvcm0gaW4gZnVydGhlciBhbmFseXNpcy4NCmBgYHtyfQ0KcD1nZ3Bsb3QyOjpnZ3Bsb3QobmV3ZGF0YSwgYWVzKHggPU5ld19UaXAgKSkgKyANCiAgZ2VvbV9oaXN0b2dyYW0oZmlsbD0iYmxhY2siLGNvbD0iYmxhY2siLGFscGhhPTAuMixiaW53aWR0aD0wLjIpICsgDQp0aGVtZV9taW5pbWFsKCkgKyBnZ3RpdGxlKCIgSGlzdG9ncmFtIG9mIHRoZSBEaXN0cmlidXRpb24gb2YgTmV3IFRpcCBhbW91bnQiKSArDQogICNjZW50ZXIgdGl0bGUNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpICt4bGFiKCJOZXcgVGlwIGFtb3VudCIpK3lsYWIoIkZyZXF1ZW5jeSIpDQoNCmdncGxvdGx5KHApDQoNCmBgYA0KDQoNCg0KDQoNCmBgYHtyfQ0KDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojICAgDQojIEJ1aWxkaW5nIGEgUHJlZGljdGl2ZSBNb2RlbA0KIyBQcmVwcm9jZXNzaW5nIGRhdGENCiMgMSBUaGVyZSBhcmUgdGhyZWUgbWlzc2luZyB2YXJpYWJsZXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgYXQgcHJlcHJvY2Vzc2luZyBzdGVwDQojIDIgIENlbnRlciBhbmQgc2NhbGUgbnVtZXJpY2FsIGNvbHVtbnMgdG8gcmVkdWNlIHZhcmlhYmlsaXR5DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCg0KbmV3ZGF0YT1uZXdkYXRhW2NvbXBsZXRlLmNhc2VzKG5ld2RhdGEpLF0NCg0Kc3VtKGlzLm5hKG5ld2RhdGEpKQ0KDQoNCnN1bW1hcnkobmV3ZGF0YSkNCg0KYGBgDQoNCg0KDQoNCmBgYHtyfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KI1NwbGl0aW5nIHRyYWluaW5nIHNldCBpbnRvIHR3byBwYXJ0cyBiYXNlZCBvbiBvdXRjb21lOg0KIyBUcmFpbmluZyBzZXQgd2hpY2ggNzAlIGFuZCBUZXN0IHNldCB3aGljaCAzMCUgb2YgdGhlIGRhdGENCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KDQppbmRleCA8LSBjcmVhdGVEYXRhUGFydGl0aW9uKG5ld2RhdGEkVGlwX2Ftb3VudCwgcD0wLjcwLCBsaXN0PUZBTFNFKQ0KDQp0cmFpblNldCA8LSBuZXdkYXRhWyBpbmRleCxdDQoNCnRlc3RTZXQgPC0gbmV3ZGF0YVstaW5kZXgsXQ0KDQoNCnN1bShpcy5uYSh0cmFpblNldCkpDQpzdW0oaXMubmEodGVzdFNldCkpDQpzdW0oaXMubmEobmV3ZGF0YSkpDQoNCmBgYA0KDQoNClRoZXJlIGFyZSB2ZXJ5ICBoaWdoIHBvc2l0aXZlICBjb3JyZWxhdGlvbnMgYmV0d2VlbiBUb3RhbCBhbW91bnQgYW5kIFRyaXAgZGlzdGFuY2Usb2YgY291cnNlIHdoaWNoIG1ha2VzIHNlbnNlIA0KVG90YWwgYW1vdW50IGFuZCBGYXJlIGFtb3VudCB0aGF0IHBhc3NlbmdlcnMgd2hvIHRyYXZlbGxlZCBsb25nZXIgZGlzdGFuY2VzICB3ZXJlIGNoYXJnZWQgbW9yZS4NClRoZXJlIGlzIGFsc28gYSBzaWduaWZpY2FudCBwb3NpdGl2ZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIFRvdGFsIGFtb3VudCBhbmQgVGlwIGFtb3VudC4NClBhc3NlbmdlcnMgd2hvIHRyYXZlbGxlZCBsb25nZXIgZGlzdGFuY2VzIGFuZCBwYWlkIGhpZ2hlciBmYXJlcyB3ZXJlIG1vcmUgbGlrZWx5IHRvIHRpcC4NCg0KYGBge3J9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojICBFeHBsb3JhdG9yeSBkYXRhIGFuYWx5c2lzDQojIERldGVybWluZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHZhcmlhYmxlcw0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQoNCg0KDQpuZXdkYXRhJT4lZHBseXI6OnNlbGVjdChOZXdfZGlzdGFuY2UsRmFyZV9hbW91bnQsaW1wcm92ZW1lbnRfc3VyY2hhcmdlLFRvbGxzX2Ftb3VudCxUaXBfYW1vdW50LE1UQV90YXgNCiAgICAgICAgICAgICAgICAgICAgICAgICxFeHRyYSxQYXNzZW5nZXJfY291bnQsVmVuZG9ySUQsIFRpcCxUb3RhbF9hbW91bnQpJT4lY29yDQoNCg0KDQpgYGANCg0KDQoNCg0KYGBge3J9DQpnZ3Bsb3QodHJhaW5TZXQgLCBhZXMoVGlwLCBUaXBfYW1vdW50KSkrZ2VvbV9wb2ludChjb2xvcj0icHVycGxlIikrDQogIGdndGl0bGUoJ1RpcCB2cyBUaXBfYW1vdW50JykrDQogIHhsYWIoJ1RpcCcpK3lsYWIoJ1RpcF9hbW91bnQnKSsNCiAgc3RhdF9zbW9vdGgobWV0aG9kPWxtLCBjb2xvdXI9J2JsYWNrJyxzcGFuPTAuMikNCmBgYA0KVGhlcmUgZXhpc3QgYSBzdHJvbmcgYXNzb2NpYXRpb24gYmV0d2VlbiBUaXAgYW5kIFRpcCBhbW91bnQuDQoNCg0KDQoNCmBgYHtyfQ0KZ2dwbG90KHRyYWluU2V0ICwgYWVzKFRpcCwgRmFyZV9hbW91bnQpKStnZW9tX3BvaW50KGNvbG9yPSJwdXJwbGUiKSsNCiAgZ2d0aXRsZSgnVGlwIHZzIEZhcmVfYW1vdW50JykrDQogIHhsYWIoJ1RpcCcpK3lsYWIoJ0ZhcmVfYW1vdW50JykrDQogIHN0YXRfc21vb3RoKG1ldGhvZD1sbSwgY29sb3VyPSdibGFjaycsc3Bhbj0wLjIpDQpgYGANCg0KDQoNCg0KDQpgYGB7cn0NCmdncGxvdCh0cmFpblNldCAsIGFlcyhUaXAsIFRyaXBfZGlzdGFuY2UpKStnZW9tX3BvaW50KGNvbG9yPSJwdXJwbGUiKSsNCiAgZ2d0aXRsZSgnVGlwIHZzIFRyaXBfZGlzdGFuY2UnKSsNCiAgeGxhYignVGlwJykreWxhYignVHJpcF9kaXN0YW5jZScpKw0KICBzdGF0X3Ntb290aChtZXRob2Q9bG0sIGNvbG91cj0nYmxhY2snLHNwYW49MC4yKQ0KYGBgDQoNClRoZSBmaWd1cmUgc2hvd3MgdGhlcmUgYXJlIGEgZmV3IG91dGxpZXIgcG9pbnRzICx3aGVyZSB0aGUgVGlwIHdhcyBsb3cgZm9yIGEgdmVyeSBsb25nIFRyaXAgZGlzdGFuY2UNCg0KDQoNCmBgYHtyfQ0KZ2dwbG90KHRyYWluU2V0ICwgYWVzKFRpcCwgTmV3X2Rpc3RhbmNlKSkrZ2VvbV9wb2ludChjb2xvcj0icHVycGxlIikrDQogIGdndGl0bGUoJ1RpcCB2cyAgTmV3X2Rpc3RhbmNlJykrDQogIHhsYWIoJ1RpcCcpK3lsYWIoJ05ld19kaXN0YW5jZScpKw0KICBzdGF0X3Ntb290aChtZXRob2Q9bG0sIGNvbG91cj0nYmxhY2snLHNwYW49MC4yKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCmdncGxvdCh0cmFpblNldCAsIGFlcyhUaXAsIFRvbGxzX2Ftb3VudCkpK2dlb21fcG9pbnQoY29sb3I9InB1cnBsZSIpKw0KICBnZ3RpdGxlKCdUaXAgdnMgVG9sbHNfYW1vdW50JykrDQogIHhsYWIoJ1RpcCcpK3lsYWIoJ1RvbGxzX2Ftb3VudCcpKw0KICBzdGF0X3Ntb290aChtZXRob2Q9bG0sIGNvbG91cj0nYmxhY2snLHNwYW49MC4yKQ0KYGBgDQoNCg0KIFRoZSBGaWd1cmUgZG9lcyByZXZlYWwgYSB3ZWFrIHBvc2l0aXZlIGFzc29jaWF0aW9uICBiZXR3ZWVuIFRvbGxzIGFtb3VudCBhbmQgVGlwIGdpdmVuLg0KDQoNCmBgYHtyfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyAgRG8gZmVhdHVyZSBzZWxlY3Rpb24gdXNpbmcgR2VuZXJhbGl6ZWQgTGluZWFyIE1vZGVsDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCg0KDQpjb250cm9sIDwtIHRyYWluQ29udHJvbChtZXRob2Q9InJlcGVhdGVkY3YiLCBudW1iZXI9MTAsIHJlcGVhdHM9NSkNCg0KbXlfZ2xtPC0gdHJhaW4odHJhaW5TZXRbLGMoIkZhcmVfYW1vdW50IiwiVHJpcF9kaXN0YW5jZSIsIlRvbGxzX2Ftb3VudCIsIk1UQV90YXgiLCJpbXByb3ZlbWVudF9zdXJjaGFyZ2UiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAiRXh0cmEiLCJQYXNzZW5nZXJfY291bnQiLCJWZW5kb3JJRCIpXSwgdHJhaW5TZXQkVGlwLA0KICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAiZ2xtIiwNCiAgICAgICAgICAgICAgICAgICAgcHJlUHJvYyA9IGMoImNlbnRlciIsICJzY2FsZSIpLA0KICAgICAgICAgICAgICAgICAgICB0ckNvbnRyb2wgPSBjb250cm9sKQ0KDQpwPWdncGxvdCh2YXJJbXAobXlfZ2xtLCBzY2FsZSA9IEZBTFNFKSkrZ2d0aXRsZSgiVmFyaWFibGUgSW1wb3J0YW5jZSB1c2luZyBHTE0iKSt0aGVtZV9taW5pbWFsKCkNCg0KZ2dwbG90bHkocCkNCmBgYA0KDQpGcm9tIHRoZSB2YXJpYWJsZSBpbXBvcnRhbmNlIHBsb3QsIHdlIGRyb3AgY2FuIGRyb3AgaW1wcm92ZW1lbnQgc3VyY2hhcmdlICBzaW5jZSBpdCBoYXMgIGhhdmUgdmVyeSANCmxpdHRsZSBwcmVkaWN0aXZlIHBvd2VyIGZvciBUaXAuDQoNCg0KYGBge3J9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyAgQnVpbGQgYSAgR2VuZXJhbGl6ZWQgTGluZWFyIE1vZGVsIEZvciB3aXRoIFN0ZXB3aXNlIFNlbGVjdGlvbiBwcmVkaWN0aW9uDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpjb250cm9sIDwtIHRyYWluQ29udHJvbChtZXRob2Q9InJlcGVhdGVkY3YiLCBudW1iZXI9MTAsIHJlcGVhdHM9NSkNCg0KDQpzdGVwX2dsbTwtIHRyYWluKHRyYWluU2V0WyxjKCJGYXJlX2Ftb3VudCIsIlRyaXBfZGlzdGFuY2UiLCJUb2xsc19hbW91bnQiLCJNVEFfdGF4IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4dHJhIiwiUGFzc2VuZ2VyX2NvdW50IiwiVmVuZG9ySUQiKV0sIHRyYWluU2V0JFRpcCwNCiAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gImdsbVN0ZXBBSUMiLA0KICAgICAgICAgICAgICAgICAgICBwcmVQcm9jID0gYygiY2VudGVyIiwgInNjYWxlIiksDQogICAgICAgICAgICAgICAgICAgIHRyQ29udHJvbCA9IGNvbnRyb2wpDQoNCmBgYA0KDQpgYGB7cn0NCnByZWQ8LXByZWRpY3Qoc3RlcF9nbG0sdGVzdFNldFssYygiRmFyZV9hbW91bnQiLCJUcmlwX2Rpc3RhbmNlIiwiVG9sbHNfYW1vdW50IiwiTVRBX3RheCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICJFeHRyYSIsIlZlbmRvcklEIildKQ0KDQoNCmdsbV9kYXRhPWRhdGFfZnJhbWUocHJlZGljdGVkPXByZWQsb2JzZXJ2ZWQ9dGVzdFNldCRUaXApDQoNCmdncGxvdChnbG1fZGF0YSxhZXMocHJlZGljdGVkLG9ic2VydmVkKSkrZ2VvbV9wb2ludCgpK2dlb21fc21vb3RoKG1ldGhvZD1sbSkrZ2d0aXRsZSgnR0xNJykNCg0KYGBgDQoNCg0KYGBge3J9DQojIFByaW50LCBwbG90IHZhcmlhYmxlIGltcG9ydGFuY2UNCg0KcHJpbnQodmFySW1wKG15X2dsbSwgc2NhbGUgPSBGQUxTRSkpDQoNCg0KYGBgDQoNCg0KDQpgYGB7cn0NCnBsb3QodmFySW1wKG15X2dsbSwgc2NhbGUgPSBGQUxTRSksIG1haW49IlZhcmlhYmxlIEltcG9ydGFuY2UgdXNpbmcgR0xNIikNCg0KDQpgYGANCg0KDQpgYGB7cn0NCiMgTWVhbiBTcXVhcmVkIEVycm9yDQoNCnNxcnQobWVhbihwcmVkLSB0ZXN0U2V0JFRpcCleMikNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojICBCdWlsZCBhICBQYXJ0aWFsIExlYXN0IFNxdWFyZXMgTW9kZWwgDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIFBhcnRpYWwgTGVhc3QgU3F1YXJlcyBpcyBvbmUgd2F5IHRvIHJlZHVjZSBkaW1lbnNpb24gb2YgdGhlIHByZWRpY3RvcnMgdXNlZCBpbiB0aGUgbW9kZWwuIEl0IGlkZW50aWZpZXMNCiNsaW5lYXIgY29tYmluYXRpb25zLG9yIGRpcmVjdGlvbnMsIHRoYXQgYmVzdCByZXByZXNlbnQgdGhlIHByZWRpY3RvcnMgaW4gdGhlIGRhdGEuVGhlIGRpcmVjdGlvbnMgYXJlIGlkZW50aWZpZWQgaW4gDQojIHVuc3VwZXJ2aXNlZCB3YXkgc2luY2UgdGhlIG91dGNvbWUgdmFyaWFibGUgaXMgbm90IGluIGlkZW50aWZ5aW5nIHRoZSBwcmluY2lwYWwNCiMgY29tcG9uZW50IGRpcmVjdGlvbnMuVGhlIHByZWRpY3RvcnMgYXJlIHByZXByb2Nlc3NlZCBieSBjZW50ZXJpbmcgYW5kIHNjYWxpbmcuDQojIFBMUyB3aWxsIHNlZWsNCiNkaXJlY3Rpb25zIG9mIG1heGltdW0gdmFyaWF0aW9uIHdoaWxlIHNpbXVsdGFuZW91c2x5IGNvbnNpZGVyaW5nIGNvcnJlbGF0aW9uIHdpdGggdGhlIHJlc3BvbnNlLg0KDQoNCmNvbnRyb2wgPC0gdHJhaW5Db250cm9sKG1ldGhvZD0icmVwZWF0ZWRjdiIsIG51bWJlcj0xMCwgcmVwZWF0cz01KQ0KDQpwbHNmaXQ9dHJhaW4odHJhaW5TZXRbLGMoIkZhcmVfYW1vdW50IiwiVHJpcF9kaXN0YW5jZSIsIlRvbGxzX2Ftb3VudCIsIk1UQV90YXgiLA0KICAgICAgICAgICAgICAgICAgIkV4dHJhIiwiVmVuZG9ySUQiLCJQYXNzZW5nZXJfY291bnQiKV0sIHRyYWluU2V0JFRpcCwNCiAgICAgIG1ldGhvZCA9ICJnbG1TdGVwQUlDIix0dW5lTGVuZ3RoID0gMjAsDQogICAgICBwcmVQcm9jID0gYygiY2VudGVyIiwgInNjYWxlIiksDQogICAgICB0ckNvbnRyb2wgPSBjb250cm9sKQ0KDQoNCg0KDQoNCg0KIyBQcmVkaWN0IHVzaW5nIHRlc3QgZGF0YQ0KDQoNCnByZWQ8LXByZWRpY3QocGxzZml0LHRlc3RTZXRbLGMoIkZhcmVfYW1vdW50IiwiVHJpcF9kaXN0YW5jZSIsIlRvbGxzX2Ftb3VudCIsIk1UQV90YXgiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHRyYSIsIlZlbmRvcklEIildKQ0KDQpteV9kYXRhPWRhdGFfZnJhbWUocHJlZGljdGVkPXByZWQsb2JzZXJ2ZWQ9dGVzdFNldCRUaXApDQoNCmdncGxvdChteV9kYXRhLGFlcyhwcmVkaWN0ZWQsb2JzZXJ2ZWQpKStnZW9tX3BvaW50KCkrZ2VvbV9zbW9vdGgobWV0aG9kPWxtKStnZ3RpdGxlKCdQTFMnKQ0KDQpgYGANCg0KDQpgYGB7cn0NCiMgUHJpbnQsIHBsb3QgdmFyaWFibGUgaW1wb3J0YW5jZQ0KcHJpbnQodmFySW1wKHBsc2ZpdCwgc2NhbGUgPSBGQUxTRSkpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KcGxvdCh2YXJJbXAocGxzZml0LCBzY2FsZSA9IEZBTFNFKSwgbWFpbj0iVmFyaWFibGUgSW1wb3J0YW5jZSB1c2luZyBQTFMiKQ0KYGBgDQoNCg0KYGBge3J9DQojIE1lYW4gU3F1YXJlZCBFcnJvcg0KDQpzcXJ0KG1lYW4ocHJlZC0gdGVzdFNldCRUaXApXjIpDQpgYGANCg0KDQoNCg0KYGBge3J9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyAgQnVpbGQgUGVuYWxpemVkIGxpbmVhciByZWdyZXNzaW9uIG1vZGVscyBNb2RlbCANCiMgTGFzc28gKGxlYXN0IGFic29sdXRlIHNocmlua2FnZSBhbmQgc2VsZWN0aW9uIG9wZXJhdG9yKQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KIyBUaGUgTEFTU08gIHBlbmFsaXplcyB0aGUgbW9kZWwgIGZvciBoYXZpbmcgbWFueSBwcmVkaWN0b3JzIGJ5IHNocmlua2luZyB0aGUgY29lZmZpY2llbnRzIG9mIA0KIyANCiMgdGhvc2UgcHJlZGljdG9ycyB3aXRoIGxpdHRsZSB2YXJpYXRpb24gdG8gemVybyB0aGVyZWJ5IHJlZHVjaW5nIHRoZSBkaW1lbnNpb24gb2YgdGhlIG1vZGVsLg0KDQpsYXNzb0dyaWQgPC0gZXhwYW5kLmdyaWQoLmZyYWN0aW9uID0gc2VxKC4wNSwgMSwgbGVuZ3RoID0gMjApKQ0KDQpjb250cm9sIDwtIHRyYWluQ29udHJvbChtZXRob2Q9InJlcGVhdGVkY3YiLCBudW1iZXI9MTAsIHJlcGVhdHM9NSkNCg0Kc2V0LnNlZWQoMTAwKQ0KDQoNCg0KDQpsYXNzb2ZpdD10cmFpbih0cmFpblNldFssYygiRmFyZV9hbW91bnQiLCJUcmlwX2Rpc3RhbmNlIiwiVG9sbHNfYW1vdW50IiwiTVRBX3RheCIsDQogICAgICAgICAgICAgICAgICAiRXh0cmEiLCJWZW5kb3JJRCIpXSwgdHJhaW5TZXQkVGlwLA0KICAgICAgbWV0aG9kID0gImxhc3NvIix0dW5lR3JpZCA9IGxhc3NvR3JpZCwNCiAgICAgIHByZVByb2MgPSBjKCJjZW50ZXIiLCAic2NhbGUiKSwNCiAgICAgIHRyQ29udHJvbCA9IGNvbnRyb2wpDQoNCg0KIyBQcmVkaWN0IHVzaW5nIHRlc3QgZGF0YQ0KcHJlZDwtcHJlZGljdChsYXNzb2ZpdCx0ZXN0U2V0WyxjKCJGYXJlX2Ftb3VudCIsIlRyaXBfZGlzdGFuY2UiLCJUb2xsc19hbW91bnQiLCJNVEFfdGF4IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXh0cmEiLCJWZW5kb3JJRCIpXSkNCg0KbXlfZGF0YT1kYXRhX2ZyYW1lKHByZWRpY3RlZD1wcmVkLG9ic2VydmVkPXRlc3RTZXQkVGlwKQ0KDQpnZ3Bsb3QobXlfZGF0YSxhZXMocHJlZGljdGVkLG9ic2VydmVkKSkrZ2VvbV9wb2ludCgpK2dlb21fc21vb3RoKG1ldGhvZD1sbSkrZ2d0aXRsZSgnTEFTU08gTW9kZWwnKQ0KDQpgYGANCg0KYGBge3J9DQpwcmludCh2YXJJbXAobGFzc29maXQsIHNjYWxlID0gRkFMU0UpLCBtYWluPSJWYXJpYWJsZSBJbXBvcnRhbmNlIHVzaW5nIGxhc3NvIikNCmBgYA0KDQoNCmBgYHtyfQ0KcGxvdCh2YXJJbXAobGFzc29maXQsIHNjYWxlID0gRkFMU0UpLCBtYWluPSJWYXJpYWJsZSBJbXBvcnRhbmNlIHVzaW5nIGxhc3NvIikNCmBgYA0KDQoNCg0KYGBge3J9DQpwbG90KGxhc3NvZml0KQ0KYGBgDQoNCg0KYGBge3J9DQojRXh0cmFjdCBjb2VmZmljaWVudHMgb2YgZmluYWwgbW9kZWwNCg0KcHJlZGljdC5lbmV0KGxhc3NvZml0JGZpbmFsTW9kZWwsIHR5cGU9J2NvZWZmaWNpZW50cycsIHM9bGFzc29maXQkYmVzdFR1bmUkZnJhY3Rpb24sIG1vZGU9J2ZyYWN0aW9uJykNCg0KYGBgDQoNCg0KDQpgYGB7cn0NCiMgTWVhbiBTcXVhcmVkIEVycm9yDQoNCnNxcnQobWVhbihwcmVkLSB0ZXN0U2V0JFRpcCleMikNCmBgYA0KDQoNCkkgcmFuIG91dCBtZW1vcnkgYWZ0ZXIgIHNldmVyYWwgYXR0ZW1wdHMgdG8gZml0IGEgcmFuZG9tIGZvcmVzdCBtb2RlbC4NCmBgYHtyfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgIFJhbmRvbSBGb3Jlc3QgbGluZWFyIHJlZ3Jlc3Npb24gbW9kZWxzIE1vZGVsIA0KIyANCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCg0KDQpjb250cm9sIDwtIHRyYWluQ29udHJvbChtZXRob2Q9InJlcGVhdGVkY3YiLCBudW1iZXI9MTAsIHJlcGVhdHM9NSkNCg0KDQoNCnJmX2ZpdDwtdHJhaW4odHJhaW5TZXRbLGMoIkZhcmVfYW1vdW50IiwiVHJpcF9kaXN0YW5jZSIsIlRvbGxzX2Ftb3VudCIsIk1UQV90YXgiLA0KICAgICAgICAgICAgICAgICAgIkV4dHJhIiwiVmVuZG9ySUQiKV0sIHRyYWluU2V0JFRpcCwNCiAgICAgIG1ldGhvZCA9ICJyZiIsIG50cmVlcyA9IDEwMDAsaW1wb3J0YW5jZSA9IFRSVUUsDQogICAgICBwcmVQcm9jID0gYygiY2VudGVyIiwgInNjYWxlIiksDQogICAgICB0ckNvbnRyb2wgPSBjb250cm9sKQ0KDQojIFByZWRpY3QgdXNpbmcgdGhlIHRlc3QgZGF0YQ0KDQpwcmVkPC1wcmVkaWN0KHJmX2ZpdCx0ZXN0U2V0WyxjKCJGYXJlX2Ftb3VudCIsIlRyaXBfZGlzdGFuY2UiLCJUb2xsc19hbW91bnQiLCJNVEFfdGF4IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXh0cmEiLCJWZW5kb3JJRCIpXSkNCg0KbXlfZGF0YT1hZGF0YV9mcmFtZShwcmVkaWN0ZWQ9cHJlZCxvYnNlcnZlZD10ZXN0U2V0JFRpcCkNCg0KZ2dwbG90KG15X2RhdGEsYWVzKHByZWRpY3RlZCxvYnNlcnZlZCkpK2dlb21fcG9pbnQoKStnZW9tX3Ntb290aChtZXRob2Q9bG0pK2dndGl0bGUoJ1JhbmRvbSBGb3Jlc3QgTW9kZWwnKQ0KDQpgYGANCg0KDQpgYGB7cn0NCnBsb3QodmFySW1wKHJmX2ZpdCwgc2NhbGUgPSBGQUxTRSksbWFpbj0iVmFyaWFibGUgSW1wb3J0YW5jZSB1c2luZyBSRiIpDQpgYGANCg0KDQoNCmBgYHtyfQ0KIyBNZWFuIFNxdWFyZWQgRXJyb3INCg0Kc3FydChtZWFuKHByZWQtIHRlc3RTZXQkVGlwKV4yKQ0KYGBgDQoNCg0KSSByYW4gb3V0IG1lbW9yeSBhZnRlciAgc2V2ZXJhbCBhdHRlbXB0cyB0byBmaXQgYSBncmFkaWVudCBib29zdGluZyBtYWNoaW5lLg0KYGBge3J9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBHcmFkaWVudCBCb29zdGluZyBNYWNoaW5lICBNb2RlbCANCiMgDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIFRvIHR1bmUgb3ZlciBpbnRlcmFjdGlvbiBkZXB0aCwgbnVtYmVyIG9mIHRyZWVzLCBhbmQgc2hyaW5rYWdlIGZpcnN0IGRlZmluZSBhIHR1bmluZyBncmlkLA0KI3RoZW4gdHJhaW4gb3ZlciB0aGlzIGdyaWQNCg0KDQpnYm1HcmlkIDwtIGV4cGFuZC5ncmlkKC5pbnRlcmFjdGlvbi5kZXB0aCA9IGMoMiw1LDgpLA0KICAgICAgICAgICAgICAgICAgICAgICAubi50cmVlcyA9IGMoNTAwLCAxMDAwLDIwMDAsNTAwMCksDQogICAgICAgICAgICAgICAgICAgICAgIC5zaHJpbmthZ2UgPSBjKDAuMDEsIDAuMSksDQogICAgICAgICAgICAgICAgICAgICAgIC5uLm1pbm9ic2lubm9kZT1jKDUsMTAsMTUpKQ0KDQpjb250cm9sIDwtIHRyYWluQ29udHJvbChtZXRob2Q9InJlcGVhdGVkY3YiLCBudW1iZXI9MTAsIHJlcGVhdHM9NSkNCg0KDQpnYm1fZml0PC10cmFpbih0cmFpblNldFssYygiRmFyZV9hbW91bnQiLCJUcmlwX2Rpc3RhbmNlIiwiVG9sbHNfYW1vdW50IiwiTVRBX3RheCIsDQogICAgICAgICAgICAgICAgICAgICJFeHRyYSIsIlZlbmRvcklEIildLCB0cmFpblNldCRUaXAsDQogICAgICAgIG1ldGhvZCA9ICJnYm0iLHZlcmJvc2U9Rix0dW5lR3JpZCA9IGdibUdyaWQsDQogICAgICAgIHByZVByb2MgPSBjKCJjZW50ZXIiLCAic2NhbGUiKSwNCiAgICAgICAgdHJDb250cm9sID0gY29udHJvbCkNCg0KIyBQcmVkaWN0IHVzaW5nIHRoZSB0ZXN0IGRhdGENCg0KcHJlZDwtcHJlZGljdChnYm1fZml0LHRlc3RTZXRbLGMoIkZhcmVfYW1vdW50IiwiVHJpcF9kaXN0YW5jZSIsIlRvbGxzX2Ftb3VudCIsIk1UQV90YXgiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXh0cmEiLCJWZW5kb3JJRCIpXSkNCg0KbXlfZGF0YT1hZGF0YV9mcmFtZShwcmVkaWN0ZWQ9cHJlZCxvYnNlcnZlZD10ZXN0U2V0JFRpcCkNCg0KDQpnZ3Bsb3QobXlfZGF0YSxhZXMocHJlZGljdGVkLG9ic2VydmVkKSkrZ2VvbV9wb2ludCgpK2dlb21fc21vb3RoKG1ldGhvZD1sbSkrZ2d0aXRsZSgnQm9vc3RpbmcnKQ0KDQoNCg0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KcGxvdCh2YXJJbXAoZ2JtX2ZpdCwgc2NhbGUgPSBGQUxTRSksbWFpbj0iVmFyaWFibGUgSW1wb3J0YW5jZSB1c2luZyBCb29zdGluZyIpDQpgYGANCg0KDQoNCmBgYHtyfQ0KIyBNZWFuIFNxdWFyZWQgRXJyb3INCg0Kc3FydChtZWFuKHByZWQtIHRlc3RTZXQkVGlwKV4yKQ0KYGBgDQoNCg0KDQpXZSBjb25zdHJ1Y3RlZCBhIGRlcml2ZWQgdmFyaWFibGUgb2YgdGltZSBkaWZmZXJlbmNlIGJ5IHN1YnRyYWN0aW5nIHBpY2sgdXAgdGltZSBmcm9tIGRyb3Agb2ZmIHRpbWUuVGhlIGF2ZXJhZ2Ugc3BlZWQgb2YgYW55IA0KdHJpcCB3YXMgb2J0YWluZWQgYnkgZGl2aWRpbmcgZGlzdGFuY2UgY292ZXJlZCBieSB0aGUgdGltZSB0YWtlLiBUaGUgdGltZSBpcyBjb252ZXJ0ZWQgdG8gc2Vjb25kcyB0byBob3Vycw0Kd2hpY2ggaXMgc3RhbmRhcmQgIGZvcm0uVGhlIE92ZXJhbGwgYXZlcmFnZSBzcGVlZCBvZmYgYWxsIHRyaXBzIGlzIGFib3V0IDEzIG1pbGVzIHBlciBob3VyLg0KDQpgYGB7cn0NCiNCdWlsZCBhIGRlcml2ZWQgdmFyaWFibGUgcmVwcmVzZW50aW5nIHRoZSBhdmVyYWdlIHNwZWVkIG92ZXIgdGhlIGNvdXJzZSBvZiBhIHRyaXAuDQojQXZlcmFnZSBTcGVlZD0oZGlzdGFuY2UpL3RpbWUNCg0KIyAxIGNyZWF0ZSBhIFRpbWVEaWZmZXJlbmNlIHZhcmlhYmxlIGJ5IHN1YnRyYWN0aW5nICBscGVwX3BpY2t1cF9kYXRldGltZQ0KIyBmcm9tIExwZXBfZHJvcG9mZl9kYXRldGltZSB1c2luZyB0aGUgZGlmZnRpbWUgZnVuY3Rpb24uDQojMiBFeHRyYWN0IHRoZSAgbnVtZXJpYyB2YWx1ZXMgIGluIGRpZmZlcmVuY2UgIGluIHRpbWUoaW4gc2Vjb25kcykgYnkgDQojIGJ5IHRoZSBzdHJpX2V4dHJhY3RfYWxsX3JlZ2V4IGZ1bmN0aW9uDQojIDMgdW5saXN0IHRoZSByZXN1bHQgd2hpY2ggaXMgY2hhcmFjZXIgYW5kIGNvbnZlcnQgdG8gbnVtZXJpYw0KIyA0ICBjb252ZXJ0IHRpbWUgIGluIHNlY29uZHMgIHRvIGhvdXJzIGJ5IG11bHRpcGx5aW5nIGJ5IDAuMDAwMjc3Nzc4DQojIFRoaXMgc3RhbmRhcmRpemVzIHNwZWVkIGluIHNjaWVudGlmaWMgdW5pdHMgd2hpY2ggaXMgbWlsZXMgcGVyIGhvdXINCiMgNSBUaW1lIGRpZmZlcmVuY2UgZ3JlYXRlciB0aGFuIHplcm8gc2Vjb25kcyB3ZXJlIHNlbGVjdGVkIGluIGNvbXB1dGluZyB0aGUgDQojICBzcGVlZCB0byBhdm9pZCB1bmRlZmluZWQgbWF0aGVtYXRpY2FsIGV4cHJlc3Npb25zDQojIDYgU3BlZWQgdmFyaWFibGU9VHJpcCBkaXN0YW5jZS8gVGltZURpZmZlcmVuY2UNCg0KIyBBdmVyYWdlIHNwZWVkPW1lYW4gb2YgdGhlIFNwZWVkIHZhcmlhYmxlDQoNCiMgVGhlIEF2ZXJhZ2Ugc3BlZWQgb3ZlciBhbGwgb2Ygc2VwdGVtYmVyIGlzIGFwcHJveGltYXRlbHkgNS44NDQgIG1ldGVycyBwZXIgc2Vjb25kDQoNCg0KbmV3ZGF0YT1uZXdkYXRhJT4lbXV0YXRlKFRpbWVEaWZmZXJlbmNlPQ0KICAgICAgICAgICAgICBhcy5udW1lcmljKHVubGlzdCggc3RyaV9leHRyYWN0X2FsbF9yZWdleChkaWZmdGltZShhcy5QT1NJWGN0KExwZXBfZHJvcG9mZl9kYXRldGltZSwgZm9ybWF0PSIlbS8lZC8lWSAlSDolTSIsIHR6PSIiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGFzLlBPU0lYY3QobHBlcF9waWNrdXBfZGF0ZXRpbWUsIGZvcm1hdD0iJW0vJWQvJVkgJUg6JU0iLCB0ej0iIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB0ej0iIix1bml0cyA9ICwgInNlY3MiKSwgIlswLTldKyIpKSkpJT4lbXV0YXRlKFRpbWU9VGltZURpZmZlcmVuY2UqMC4wMDAyNzc3NzgpDQoNCg0KDQpuZXdkYXRhPW5ld2RhdGFbbmV3ZGF0YSRUaW1lPjAsXQ0KDQoNCg0KI25ld2RhdGE9bmV3ZGF0YSU+JW11dGF0ZShTcGVlZD1UcmlwX2Rpc3RhbmNlL1RpbWVEaWZmZXJlbmNlKSU+JWRwbHlyOjpmaWx0ZXJbbmV3ZGF0YSxUaW1lRGlmZmVyZW5jZSA+MF0NCg0KIyBUaGUgZmlsdGVyIGFwcHJvYWNoIHNlZW1zIG5vdCB0byByZWNvZ25pc2UgVGltZURpZmZlcmVuY2UgdmFyaWFibGUganVzdCBjcmVhdGVkLg0KDQpuZXdkYXRhPW5ld2RhdGElPiVtdXRhdGUoU3BlZWQ9VHJpcF9kaXN0YW5jZS9UaW1lKQ0KDQoNCg0KDQpgYGANCg0KDQoNClRoZSBvdmVyYWxsIGF2ZXJhZ2Ugc3BlZWQgZm9yIGFsbCAgdHJpcHMgYnkgZ3JlZW4gdGF4aXMgaXMgZm91bmQgdG8gYmUgMTMuMDYgbWlsZXMgcGVyIGhvdXIuDQoNCmBgYHtyfQ0KbmV3ZGF0YSU+JWRwbHlyOjpzdW1tYXJpc2UoQXZlcmFnZV9TcGVlZD1tZWFuKFNwZWVkKSkNCg0KYGBgDQoNCiBUaGUgYXZlcmFnZSB0cmlwIHNwZWVkcyBhcmUgbWF0ZXJpYWxseSBkaWZmZXJlbnQgIGluIGFsbCB3ZWVrcyBvZiBTZXB0ZW1iZXIuV2UgdGVzdGVkIGZvciB0aGUgZGlmZmVyZW5jZSBpbiANCiBtZWFucyBiZXR3ZWVuIHRoZSB0aHJlZSB3ZWVrcyBpbiBTZXB0ZW1iZXIgcGVyIHRoZSBkYXRhc2V0IGJ5IGFuIHVzaW5nIEtydXNrYWwtV2FsbGlzIGFuZCBBTk9WQSBtb2RlbC5TaW5jZSB0aGUgdHJpcCBkaXN0YW5jZSBpcyByaWdodCBza2V3ZWQsd2UgcHJvY2VlZCBmdXJ0aGVyIHRvIHVzZSBhIG5vbi1wYXJhbWV0cmljIHRlc3QgbGlrZSBLcnVza2FsLVdhbGxpcyB0byAgdGVzdCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgc3BlZWRzIG92ZXIgdGhlIHRocmVlIHdlZWtzIGluIFNlcHRlbWJlci5Cb3RoIHBhcmFtZXRyaWMgQW5vdmEgd2l0aG91dCBhbnkgdHJhbnNmb3JtYXRpb25zIGdpdmVzIGEgc2ltaWxhciBvdXRjb21lIA0KIGxpa2UgdGhlIG5vbi1wYXJhbWV0cmljIEtydXNrYWwtV2FsbGlzIHRlc3QuV2UgZm91bmQgdGhldCAgdGhlcmUgaXMgIGFzaWduaWZpY2FudCBkaWZmZXJlbmNlIGluIHRoZSBhdmVyYWdlIFNwZWVkICBieSB3ZWVrIHRyYXZlbGxlZCBpbiBTZXB0ZW1iZXIocC12YWx1ZSAgPCAyLjJlLTE2KS5UaGUgZmlyc3Qgd2VlayBoYWQgdGhlIGhpZ2hlc3QgYXZlcmFnZSBzcGVlZCBvZiBhYm91dCAxMy43NS4NCiBMYWJvciB3ZWVrZW5kIG9jY3VycmVkIGluIHRoZSAgZmlyc3Qgd2VlayBvZiBTZXB0dGVtYmVyIDIwMTUsdGhhdCBjb3VsZCBoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoZQ0KIEhpZ2hlciBzcGVlZCBpbiB0aGUgZmlyc3Qgd2VlayBvZiBTZXB0ZW1iZXIgYXMgYSBsb3Qgb2YgcGVvcGxlIHdlcmUgaW4gYSBydXNoIHRvIGdldCB0byB0aGVpciBkZXN0aW5hdGlvbnMNCiBGb3IgdGhlIGhvbGlkYXlzLg0KDQpgYGB7cn0NCiMgIFRlc3Qgb2YgdGhlIG1lYW4gYW5kIE1lZGlhbiBvZiBhdmVyYWdlIHRyaXAgc3BlZWRzDQojIGluIGFsbCB3ZWVrcyBvZiBTZXB0ZW1iZXINCiMgMSBDcmVhdGUgYSBkZXJpdmVkIHZhcmlhYmxlIFdlZWsgZm9yIHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gU2VwdGVtZWJlcg0KIyAgcHJlc2VudCBpbiB0aGUgZGF0YQ0KIyAyICBXZSB0aGVuIGdyb3VwIHNwZWVkIGJ5IHdlZWsgDQojIDMgVGVzdCBmb3IgZGlmZmVyZW5jZSBpbiBNZWFuIHNwZWVkIGZvciB0aGUgd2Vla3MgaW4gU2VwdGVtYmVyLg0KIyA0IFdlIHdpbGwgcGVyZm9ybSBLcnVza2FsIFdhbGxpcyBub25wYXJhbWV0cmljIHRlc3QgYW5kIGNvbXBhcmUgd2l0aCBwYXJhbWV0cmljIEFOT1ZBIA0KI3Rlc3Qgb2YgIHRoZSBtZWFuIFNwZWVkcyBpbiB0aGUgMyB3ZWVrcyBpbiBTZXB0ZW1iZXIuIFRoZSBBTk9WQSB0ZXN0IGFzc3VtZXMgdGhlIGRhdGEgaXMNCiMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgd2hlcmFzIEtydXNrYWwtV2FsbGlzIHRlc3QgZG9lcyBub3QuDQoNCndlZWsxPWMoIjA5LzAxLzIwMTUiLCIwOS8wMi8yMDE1IiwiMDkvMDMvMjAxNSIsIjA5LzA0LzIwMTUiLCIwOS8wNS8yMDE1IiwiMDkvMDYvMjAxNSIsIjA5LzA3LzIwMTUiKQ0Kd2VlazI9YygiMDkvMDgvMjAxNSIsIjA5LzA5LzIwMTUiLCIwOS8xMC8yMDE1IiwiMDkvMTEvMjAxNSIsIjA5LzEyLzIwMTUiLCIwOS8xMy8yMDE1IiwiMDkvMTQvMjAxNSIpDQp3ZWVrMz1jKCIwOS8xNS8yMDE1IiwiMDkvMTYvMjAxNSIsIjA5LzE3LzIwMTUiLCIwOS8xOC8yMDE1IiwiMDkvMTkvMjAxNSIsIjA5LzIwLzIwMTUiLCIwOS8yMS8yMDE1IikNCg0KbmV3ZGF0YT1uZXdkYXRhJT4lDQogIGRwbHlyOjptdXRhdGUoZGF0ZXM9IGZvcm1hdChhcy5QT1NJWGN0KHN0cnB0aW1lKG5ld2RhdGEkbHBlcF9waWNrdXBfZGF0ZXRpbWUsIiVtLyVkLyVZICVIOiVNIix0ej0iIikpICxmb3JtYXQgPSAiJW0vJWQvJVkiKSkNCg0KbmV3ZGF0YT1uZXdkYXRhICU+JSAgDQogIG11dGF0ZShXZWVrID0gY2FzZV93aGVuKC4kZGF0ZXMgJWluJSB3ZWVrMSB+IDEsIC4kZGF0ZXMgJWluJSB3ZWVrMiB+IDIsLiRkYXRlcyAlaW4lIHdlZWszIH4gMykpIA0KDQpuZXdkYXRhDQpgYGANCg0KDQoNCmBgYHtyfQ0KIyBGaW5kIHRoZSBtZWFuIHNwZWVkIGluIGVhY2ggaW4gU2VwdGVtYmVyDQoNCm5ld2RhdGEgJT4lZ3JvdXBfYnkoV2VlayklPiUgZHBseXI6OnN1bW1hcmlzZShtZWFuPW1lYW4oU3BlZWQpKQ0KIA0KYGBgDQoNCg0KYGBge3J9DQpuZXdkYXRhICU+JWRwbHlyOjpzZWxlY3QoIFdlZWssU3BlZWQpJT4lbXV0YXRlKFdlZWs9ZmFjdG9yKFdlZWspKSU+JWtydXNrYWwudGVzdCgpJT4ldGlkeSgpDQpgYGANCg0KDQoNCmBgYHtyfQ0KbmV3ZGF0YSAlPiVkcGx5cjo6c2VsZWN0KCBXZWVrLFNwZWVkKSU+JWxtKGZvcm11bGEgPSBTcGVlZCB+IGZhY3RvcihXZWVrICkpJT4lYW5vdmEoKSU+JXRpZHkoKQ0KDQpgYGANCg0KDQoNCkEgcGxhdXNpYmxlIEh5cG90aGVzaXMgd291bGQgYmUgdG8gdGVzdCBpZiBzcGVlZCBpcyBhc3NvY2lhdGVkIHdpdGggdGltZSBvZiB0aGUgZGF5LlRoaXMgY2FuIGJlIGRvbmUgYnkgYnVpbGRpbmcgYSBMaW5lYXIgcmVncmVzc2lvbiBtb2RlbC4NCiBUaGVyZSBleGlzdCBhIHNpZ25pZmljYW50IGFzc29jaWF0aW9uIGJldHdlZW4gU3BlZWQgYW5kIEhvdXIgb2YgdGhlIGRheS4gVGhlIGNvZWZmaWNpZW50IG9mIEhvdXJzIGlzIG5lZ2F0aXZlIHdoaWNoIGluZGljYXRlcyBhIG5lZ2F0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSB0d28gdmFyaWFibGVzLiBGb3IgZXZlcnkgdW5pdCBpbmNyZWFzZSBpbiBIb3VyIG9mIHRoZSBkYXksdGhlIA0KIFNwZWVkIGRlY3JlYXNlcyBieSBhIGZhY3RvciBvZiBhYm91dCAwLjEwNjM0My4NCg0KDQpgYGB7cn0NCmdncGxvdChuZXdkYXRhLCBhZXMoSG91cnMsIFNwZWVkKSkrZ2VvbV9wb2ludChjb2xvcj0icHVycGxlIikrDQogIGdndGl0bGUoJ0hvdXJzIHZzIFNwZWVkJykrDQogIHhsYWIoJ0hvdXJzJykreWxhYignU3BlZWQnKSsNCiAgc3RhdF9zbW9vdGgobWV0aG9kPWxtLCBjb2xvdXI9J2JsYWNrJyxzcGFuPTAuMikNCg0KYGBgDQoNCg0KYGBge3J9DQpuZXdkYXRhICU+JWRwbHlyOjpzZWxlY3QoU3BlZWQsSG91cnMpJT4lbXV0YXRlKCBIb3Vycz1hcy5udW1lcmljKCBIb3VycykpJT4lDQogIGxtKGZvcm11bGEgPSBTcGVlZCB+IChIb3VycyApKSU+JXN1bW1hcnkoKQ0KDQoNCmBgYA0KDQoNCmBgYHtyfQ0KZml0X2dsbT1nbG0oIFNwZWVkIH4gYXMubnVtZXJpYyhIb3VycyksIGRhdGE9bmV3ZGF0YSkNCg0KDQp0aWR5KGZpdF9nbG0pDQpgYGANCg0KDQpgYGB7cn0NCmhlYWQoYXVnbWVudChmaXRfZ2xtKSkNCmBgYA0KDQoNCg0KYGBge3J9DQpnbGFuY2UoZml0X2dsbSkNCmBgYA0KDQoNCg0KDQoNCk90aGVyIGluc2lnaHRzIG9uZSB3b3VsZCBjb25zaWRlciBnaXZlbiBhbXBsZSB0aW1lIGluY2x1ZGUgdGhlIGZvbGxvd2luZzoNCg0KMS4gU3BhdGlhbCBkYXRhIGFuYWx5c2lzIHdpdGggZ2V0X21hcCBhbmQgZ2dtYXAgdG8gZGV0ZXJtaW5lIGlmIHRoZSBncmVlbiB0YXhpcyBmb2xsb3dlZCB0aGUgY2l0eXMgb3JkZXIgdG8gcGljayB1cCANCnBhYXNlbmdlcnMgZnJvbSBNYW5oYXR0YW4gZWNsdXNpb25hcnkgem9uZS4NCjIuIEJ1aWxkaW5nIHByZWRpY3RpdmUgbW9kZWxzIHdpdGggZGVlcCBuZXVyYWwgbmV0d29ya3Mgd2hpY2ggaXMga25vd24gdG8gaGF2ZSBiZXR0ZXIgcHJlZGljdGl2ZSBwb3dlci4NCg0KMy4gU2hvd2luZyBpbnRlcmFjdGl2ZSBwbG90cyB0byBhc3Npc3QgaW4gZGV0ZWN0aW5nIGFueSB1bmRlcmx5aW5nIHBhdHRlcm5zIG9mIHRoZSBkYXRhLg==